【发布时间】:2016-07-24 22:15:16
【问题描述】:
我目前调用 clang 或 gcc
cc -E -DPREPROCESSING ...
在调试宏时。
我发现定义是多余的。我可以在源代码中编写一个表达式来检测编译器在预处理后何时停止,然后从我的构建脚本中删除这个定义吗?
#if magic
#define PREPROCESSING
#ending
查看文档表明没有,但幸运的是我错过了一些东西。
【问题讨论】:
-
拥有这个不会有非常普遍的价值,并且会引入构建错误。构建系统可以选择将预处理作为一个单独的步骤,多次调用编译器。如果存在此功能,则预处理然后分别编译(例如,以提高跨平台并行构建性能)将生成与在单个执行中进行预处理和编译不同的输出。那将是非常令人惊讶和错误的行为。在这种情况下,您将如何处理预编译的标头?
标签: gcc clang c-preprocessor