【问题标题】:Is preprocessor output reduced when compiling?编译时预处理器输出是否减少?
【发布时间】:2014-02-21 22:19:33
【问题描述】:

我目前正在学习 C 编程语言,并且很好奇在使用预处理器宏时我会得到什么代码输出。所以我用-E 开关运行gcc 并查看了输出,有点惊讶。总产量超出预期。阅读完此内容后:http://tigcc.ticalc.org/doc/cpp.html 我意识到这种行为是有意为之的,但仍然存在一个问题(我在使用 google 时找不到答案):进入下一个编译阶段时,包含的大部分代码是否已优化掉?例如,生成的代码包含typedefs__u_charmemcpy 的定义等在我的程序中没有使用。当我得到生成的可执行格式时,这些引用是否仍然存在,或者从编译器/汇编器中删除?

【问题讨论】:

  • 0) int main(void) { return 0; } 1) 在其上运行 gcc -E。 2)在其上运行 gcc -S 。 3) 是的:大部分是 optimized away ,生成的汇编代码只包含 return 0; 部分。

标签: c compilation c-preprocessor


【解决方案1】:

它们只是函数的“原型”,允许您在代码中引用它们。他们自己根本不占用任何空间。只有您使用的函数的代码实际上会从库本身复制到可执行文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 2013-12-07
    • 1970-01-01
    • 2014-07-20
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多