我们在代码中使用了一些在今天的标准中无效的指令.
例如. #注释1
这曾经用于非常旧版本的gcc(2.x).我试图把它移到新的gcc(4.x)但是我得到的错误如下:
“错误:无效的预处理指令#COMMENT1”
简单的解决方法是在这些指令中将#更改为//,但由于某些其他依赖项,我们无法做到这一点.
问题是,有没有办法告诉cpp忽略这些无效的指令?
但是它应该解释有效的指令,例如#ifndef #define等
谢谢!
最佳答案 你没有说你为什么
cannot change # to // in those directives
我想你有一些工具或脚本取决于它们.您应该更新这些以遵循当前标准.
也许更独特或不可能的后缀可能对您有所帮助,例如使用//#COMMENT而不是#COMMENT
但实质上,您要求一个或多或少标准的符合编译器来理解非标准和已弃用的语言功能,这基本上是没有希望的.
或者,您可以修补最近的GCC源代码(例如GCC 4.6 one)以满足您的要求,但我不认为这是一个非常好的想法(甚至GCC 4.6的插件功能也没有帮助,因为那里在它的预处理器中没有插件钩子).
我的建议仍然是更改源代码以更符合当前标准.这几乎不是时间损失.