【发布时间】:2016-02-16 05:44:53
【问题描述】:
考虑类似以下场景:
main.c 包含类似这样的内容:
#include "sub.h"
main(){
int i = 0;
while(i < 1000000000){
f();
i++;
}
}
而 sub.h 包含:
void f();
并且 sub.c 包含这样的内容:
void f(){
int a = 1;
}
现在,如果这些都在一个源文件中,编译器(在我的例子中是 gcc)会注意到 f() 实际上并没有做任何事情并优化循环。但由于编译发生在链接之前,因此在这种情况下无法进行优化。
对于本地包含文件,可以通过包含原始 .c 文件而不是 tan 标头来避免这种情况,但是当包含来自其他库的标头时,这将变得不可能。有没有办法解决这个问题?
【问题讨论】:
-
寻找链接时间代码生成/链接时间优化。
标签: c compilation linker header-files compiler-optimization