2013-04-24 131 views
0

我正在尝试使用gcc预处理器来实现其宏扩展功能(我不想生成代码)。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

“需要得到一个内部有双引号的参数”为什么?你打算怎么处理它? – 2016-07-06 21:22:09

回答

1

C预处理器工作于C源代码。一个唯一的"是无效的C,所以CPP拒绝它。只有在你愿意遵守C语法规则的情况下,你才能用于其他目的。

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

+0

我可以想象这个例子可以用来创建一个编译C代码的情况。 – Ezra 2013-04-25 06:36:51