【发布时间】:2014-02-21 22:19:33
【问题描述】:
我目前正在学习 C 编程语言,并且很好奇在使用预处理器宏时我会得到什么代码输出。所以我用-E 开关运行gcc 并查看了输出,有点惊讶。总产量超出预期。阅读完此内容后:http://tigcc.ticalc.org/doc/cpp.html 我意识到这种行为是有意为之的,但仍然存在一个问题(我在使用 google 时找不到答案):进入下一个编译阶段时,包含的大部分代码是否已优化掉?例如,生成的代码包含typedefs 或__u_char 或memcpy 的定义等在我的程序中没有使用。当我得到生成的可执行格式时,这些引用是否仍然存在,或者从编译器/汇编器中删除?
【问题讨论】:
-
0)
int main(void) { return 0; }1) 在其上运行 gcc -E。 2)在其上运行 gcc -S 。 3) 是的:大部分是 optimized away ,生成的汇编代码只包含return 0;部分。
标签: c compilation c-preprocessor