我有一个使用“.global”汇编语言代码的“c”程序。我的编译器不允许这样做,我需要忽略它,我尝试了以下操作:
#define .global //global
但这会产生编译器错误。我还可以使用其他选项吗?编译错误为:
“需要一个标识符”
最佳答案
您几乎肯定最终会编写自己的预处理脚本;如果您的源文件得到合理控制,这应该不会太困难。例如,如果您不在字符串文字或注释中使用 .global
构造,则执行以下操作就足够了:
sed 's/.global [_[:alpha:]][_[:alnum:]]*;//g'
(也许更多地关注空白的细节)。
<小时/>您不能用宏创建注释。 (您也不能定义名称以 .
开头的宏,尽管我认为可能有一个编译器接受它作为扩展名。)
在翻译过程的第 3 阶段,注释被替换为空格。直到第 4 阶段才检查预处理器指令,此时所有注释都已消失。
所以两者没有区别
#define COMMENT //comment
#define COMMENT
<小时/>
标准引用:§5.1.1.2/1:
源文件被分解为预处理标记7) 和空白字符序列(包括注释)。源文件不应以部分预处理标记或部分注释结尾。每条评论都被一个空格字符替换。...
执行预处理指令,扩展宏调用,并执行
_Pragma
一元运算符表达式。...
关于c - ".global"的宏定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472949/