我要做的是#define
一个宏:
#define a(2)
以后在字符串文字中使用它:string = "a";
。
我希望将该字符串解释为不是字符串,而是获取a
的值,即2.我没有成功,有人可以帮忙吗?
答案 0 :(得分:22)
#define STRINGIFY2(X) #X
#define STRINGIFY(X) STRINGIFY2(X)
#define A 2
然后STRINGIFY(A)
会给你"2"
。您可以将它们与其他字符串文字连接起来并将它们并排放置。
"I have the number " STRINGIFY(A) "."
为您提供"I have the number 2."
。
答案 1 :(得分:5)
不,你不能进行宏扩展INSIDE字符串文字(即让预处理器查看文字以便宏扩展)。
您可以进行宏扩展以生成以stringify运算符(#
)开头的字符串文字。但那是另一回事。