首页 > 解决方案 > 在C程序编译的哪个阶段,在调用函数中插入了一个内联函数

问题描述

在宏扩展的情况下,插入发生在预处理阶段。

但是如果在哪个编译阶段内联,编译器会决定是插入它还是作为普通函数本身调用。

如果选择插入,它将在什么阶段插入。

标签: ccompilationinline

解决方案


“编译器阶段”并不是一个真正的标准化术语。C 语言只规定了一种叫做翻译阶段的东西,它详细规定了各种预处理器阶段,但对预处理后进行的所有工作却非常模糊。标准将其总结为最终的翻译阶段:

所有外部对象和函数引用都已解析。链接库组件以满足对当前翻译中未定义的函数和对象的外部引用。所有此类翻译器输出都被收集到程序映像中,该程序映像包含在其执行环境中执行所需的信息。

这包括优化和在生成可执行二进制文件之前需要完成的任何其他事情。所有关于如何以及何时完成的细节都留给编译器实现来决定他们认为合适的。


推荐阅读