ph1*_*ash 0 c optimization gcc
假设我们有一个宏+函数:
#define MY_MACRO (2*64)
int foo(void)
{
return (2 * (MY_MACRO));
}
Run Code Online (Sandbox Code Playgroud)
gcc会MY_MACRO在编译时优化到128,而不是使计算成为运行时操作吗?并且在返回语句中更进一步,是否会以类似的方式将其优化为256?
如果是这样,预处理器在可能的优化方面还会寻找其他什么?
GCC预处理器将如何优化?
没有.预处理器不执行优化 - 它只是扩展宏和#include指令.
但是,一旦预处理器完成了您的代码,所有编译器看到的是:
return (2 * ((2*64)));
Run Code Online (Sandbox Code Playgroud)
它当然可以优化到相当于return 256.它既不知道也不关心输入(2*64)是由宏生成的.