【发布时间】:2018-08-29 08:58:37
【问题描述】:
编译器是许多程序的组合。那么哪个程序在编译期间负责哪个部分?我在某处读到预处理器程序负责 C 预处理器指令(宏)。对吗?
【问题讨论】:
-
虽然 C 编译器过去确实会受到一些较小程序的影响,但如今这种情况很少见。由于如何指定translation phases,它通常是一个程序。如果是这样,通常可以选择在预处理后停止。
-
"..C++ 源文件由编译器处理好像以下阶段发生,完全按照以下顺序:.." en.cppreference.com/w/cpp/language/translation_phases 好像 是这里的关键词,大多数编译器(现在)只是一个可执行文件。
-
编译器可以选择只运行预处理器,或者至少保存预处理器输出,这也是很常见的。如果这就是您要查找的内容,请参阅编译器的文档。
-
哦,虽然实际的编译器通常是单个程序,但直接调用它是不常见的。相反,有一个“前端”程序(如 GCC 的
gcc或g++)调用实际的编译器,然后可能是链接器。 -
所有这些都特定于您正在使用的编译器。 C++ 标准都没有规定。
标签: c++ c macros c-preprocessor compiler-directives