6

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

#define STR(x) #x

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

但是如何将宏(不是宏参数)转换为字符串?

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

#define CONSTANT 42

这不起作用:STR(CONSTANT). 这产生"CONSTANT"了我们不想要的结果。

4

2 回答 2

15

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

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

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

于 2011-07-28T00:39:46.743 回答
10

你需要双重间接魔法:

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

#define CONSTANT 42

const char * str = STR(CONSTANT);
于 2011-07-28T00:40:22.093 回答