繁体   English   中英

“ .global”的宏定义

[英]Macro definition for “.global”

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

#define .global //global

但这会导致编译器错误。 我还有其他选择可以使用吗? 编译错误是:

“期望一个标识符”

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

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

(也许更多地注意空白)。


您不能使用宏进行注释。 (您也不能定义名称以.开头的宏,尽管我想可能会有一个接受该扩展名的编译器。)

在翻译过程的第3阶段中,注释将替换为空格。 直到阶段4才检查预处理器指令,到那时所有注释都消失了。

所以两者之间没有区别

#define COMMENT //comment
#define COMMENT

标准参考:§5.1.1.2/ 1:

  1. 源文件被分解为预处理令牌7)和空白字符序列(包括注释)。 源文件不得以部分预处理令牌或部分注释结尾。 每个注释都用一个空格字符代替。…

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM