1

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

1 回答 1

1

C 预处理器处理 C 源代码。一个单独"的不是有效的 C,所以 cpp 拒绝它。只有当您愿意遵守 C 语法规则时,您才能将 cpp 用于其他目的。

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

于 2013-04-24T21:23:32.913 回答