gcc预处理器:如何在参数中转义引号

时间:2013-04-24 19:58:54

标签: gcc c-preprocessor

我正在尝试使用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"
$

1 个答案:

答案 0 :(得分:1)

C预处理器适用于C源代码。单独的"无效C,因此cpp拒绝它。只有在您愿意遵守C语法规则时,才能将cpp用于其他目的。

m4是一个通用的宏处理器和标准,安装在类似Unix的任何东西上,尽管没有人喜欢它。没有太多选择。