“.global”的宏定义

时间:2015-09-09 07:04:50

标签: c macros

我有一个使用“.global”汇编语言代码的“c”程序。我的编译器不允许这样做,我需要忽略它,我尝试了以下内容:

#define .global //global

但这会产生编译错误。还有其他我可以使用的选项。编译错误是:

“预期标识符”

1 个答案:

答案 0 :(得分:0)

您几乎肯定会最终编写自己的预处理脚本;如果您的源文件得到合理控制,那应该不会太困难。例如,如果您不在字符串文字或注释中使用.global构造,那么执行以下操作就足够了:

sed  's/.global [_[:alpha:]][_[:alnum:]]*;//g'

(或许更多关注空白的细节)。

您无法使用宏制作评论。 (你也不能定义名称以.开头的宏,虽然我想可能有一个编译器接受它作为扩展名。)

在翻译过程的第3阶段,注释被替换为空格。直到第4阶段才会检查预处理程序指令,此时所有注释都已消失。

所以

之间没有区别
#define COMMENT //comment
#define COMMENT

标准参考:§5.1.1.2/ 1:

  1. 源文件被分解为预处理标记7)和空白字符序列(包括注释)。源文件不应以部分预处理标记或部分注释结束。每个评论都被一个空格字符替换。

  2. 执行预处理指令,扩展宏调用,并执行_Pragma一元运算符表达式....