【问题标题】:gcc preprocessor: how to escape quotes in an argumentgcc 预处理器:如何在参数中转义引号
【发布时间】:2013-04-24 19:58:54
【问题描述】:

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

【问题讨论】:

  • "需要得到一个内部有双引号的参数" 为什么?你打算用它做什么?

标签: gcc c-preprocessor


【解决方案1】:

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

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

【讨论】:

  • 我可以想象这个例子可以用来创建编译c代码的情况。
猜你喜欢
  • 2011-01-14
  • 2019-02-02
  • 2011-10-04
  • 1970-01-01
  • 2011-01-01
  • 2020-06-20
  • 2021-11-27
  • 1970-01-01
相关资源
最近更新 更多