【问题标题】:Multiline C Macro [duplicate]多行 C 宏 [重复]
【发布时间】:2014-07-17 08:15:19
【问题描述】:

我正在使用 CPP 来扩展基于多个标题的测试文件。预处理文件被其他脚本使用。

当我使用 EXPAND_SPEC 定义时。我希望 CPP 将以下行放入文件中。

A B
光盘
英法

所以我尝试使用以下定义

#define EXPAND_SPEC\
A B \
C D \
E F

但是,CPP 用以下方式替换了这个定义

A B C B E F

如何使用define获取换行符。

【问题讨论】:

  • I 将定义替换为“A B\nC D\nE F”。不插入实际的新行。
  • 通常,换行符(和其他分隔空白字符)在 C 源代码中并不重要。是在你的吗?
  • 这对我不起作用,我在调用 CPP 时是否必须添加额外的选项?
  • 我正在使用“cpp -I file_to_be_processed -w”

标签: c macros post-processing


【解决方案1】:

你的要求是不可能的。

您不能使用 C/C++ 预处理器创建新行。

唯一的解决方案是使用不同的宏处理器或让您的宏嵌入一个特殊字符(或字符串),使用 SED 或 AWK 等文本处理实用程序可以将其替换为新行。两者都是 cygwin 的一部分。

【讨论】:

    猜你喜欢
    • 2010-11-07
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    相关资源
    最近更新 更多