我正在尝试使用#define这样的代码,例如int和char
#define name joe
这种方式是int,但我希望能够打印出#define并得到Joe一词。 我知道我可以使用
#define name "Joe"
但是我将放弃它的“智力”。
我该怎么办? 谢谢你们!
答案 0 :(得分:3)
#
预处理程序运算符将宏参数转换为字符串文字。输出:
#include <stdio.h>
#define name Joe
#define Helper(x) #x
#define Stringify(x) Helper(x)
int main(void)
{
int name = 4;
printf("%s is %d.\n", Stringify(name), name);
}
是:
乔是4。
两个宏是必需的,因为要在应用x
之后才进行Stringify
的{{1}}的扩展。因此,我们需要#
来展开Stringify
,然后再x
来产生字符串文字。
请勿在没有充分理由的情况下在生产代码中使用此代码。使用预处理器玩游戏时应谨慎使用。