在同一个源上多次运行C预处理器是否安全?

根据我的经验,C 预处理器在之前预处理过的源代码上运行时只是表现为无操作。但是这种行为是由标准保证的吗?或者,一个实现可能有一个预处理器来修改以前预处理过的代码,例如删除/修改行指令,或者执行其他可能会混淆编译器的修改?

回答

通常,cpp不能保证预处理 via是幂等的(第一次运行后的 noop)。一个简单的反例:

#define X #define Y z
X
Y

第一次调用将产生:

 #define Y z
Y

第二个:

z

话虽如此,有效的 C 代码不应该做这样的事情(因为输出不是编译器下一阶段的有效输入)。

此外,根据您尝试执行的操作,cpp类似的选项-fpreprocessed可能会有所帮助。


以上是在同一个源上多次运行C预处理器是否安全?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>