我正在尝试使用gcc预处理器来实现其宏扩展功能(我不想尝试生成代码)。
我有一个宏 - MY_MACRO - 需要获得一个内部带双引号的参数 如您所见,预处理器会产生错误:未终止的参数列表
有没有办法逃避报价?
#define MY_MACRO(X)
MY_MACRO(prefix"suffix)
例如:
$ gcc -E -P -w a.txt
error: unterminated argument list invoking macro "MY_MACRO"
$
答案 0 :(得分:1)
C预处理器适用于C源代码。单独的"
无效C,因此cpp拒绝它。只有在您愿意遵守C语法规则时,才能将cpp用于其他目的。
m4
是一个通用的宏处理器和标准,安装在类似Unix的任何东西上,尽管没有人喜欢它。没有太多选择。