我有一个使用“.global”汇编语言代码的“c”程序。我的编译器不允许这样做,我需要忽略它,我尝试了以下内容:
#define .global //global
但这会产生编译错误。还有其他我可以使用的选项。编译错误是:
“预期标识符”
答案 0 :(得分:0)
您几乎肯定会最终编写自己的预处理脚本;如果您的源文件得到合理控制,那应该不会太困难。例如,如果您不在字符串文字或注释中使用.global
构造,那么执行以下操作就足够了:
sed 's/.global [_[:alpha:]][_[:alnum:]]*;//g'
(或许更多关注空白的细节)。
您无法使用宏制作评论。 (你也不能定义名称以.
开头的宏,虽然我想可能有一个编译器接受它作为扩展名。)
在翻译过程的第3阶段,注释被替换为空格。直到第4阶段才会检查预处理程序指令,此时所有注释都已消失。
所以
之间没有区别#define COMMENT //comment
#define COMMENT
标准参考:§5.1.1.2/ 1:
源文件被分解为预处理标记7)和空白字符序列(包括注释)。源文件不应以部分预处理标记或部分注释结束。每个评论都被一个空格字符替换。
执行预处理指令,扩展宏调用,并执行_Pragma
一元运算符表达式....