【问题标题】:How do I turn a macro into a string using cpp?如何使用 cpp 将宏转换为字符串?
【发布时间】:2011-10-14 17:45:00
【问题描述】:

GNU 的 cpp 允许您将宏 参数 转换为类似这样的字符串

#define STR(x) #x

然后,STR(hi) 被替换为 "hi"

但是如何将宏(不是宏参数)变成字符串呢?

假设我有一个具有某些值的宏 CONSTANT,例如

#define CONSTANT 42

这不起作用:STR(CONSTANT)。这会产生"CONSTANT",这不是我们想要的。

【问题讨论】:

  • 我假设您希望输出为“42”——如果不编写函数,我认为您无法做到。

标签: c++ string constants stringification


【解决方案1】:

诀窍是定义一个调用STR的新宏。

#define STR(str) #str
#define STRING(str) STR(str)

然后STRING(CONSTANT) 根据需要生成"42"

【讨论】:

  • 我相信像这样使用的&符号通常被称为宏“字符串化”运算符。
【解决方案2】:

你需要双重间接魔法:

#define QUOTE(x) #x
#define STR(x) QUOTE(x)

#define CONSTANT 42

const char * str = STR(CONSTANT);

【讨论】:

    猜你喜欢
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 2016-05-10
    • 1970-01-01
    • 2019-05-24
    相关资源
    最近更新 更多