可以在同一编译单元(即同一文件)中的函数之间进行诸如常量传播的优化.
例如 :
int f(int x)
{
return 3 + x;
}
int main(void)
{
printf("%d\n", 1 + f(4));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在那个例子中,我认为一个足够智能的编译器可以将'4'常量传播到函数'f',用另一个常量'3'求解整数算术,并传回结果值,从而将所有内容折叠到最终值'8'.
(好吧,如果我错了,请纠正我..)
但是,如果函数'f'在另一个编译单元中,会发生什么.由于它们都是单独编译的,因此编译器无法优化这种方式.
这是否意味着优化只能在同一个编译单元中进行,或者是否存在某些形式的链接时延迟优化?