在C语言中同时使用int和char的“ define”

时间:2018-11-24 22:11:04

标签: c c-preprocessor

我正在尝试使用#define这样的代码,例如int和char

#define name joe

这种方式是int,但我希望能够打印出#define并得到Joe一词。 我知道我可以使用

#define name "Joe"

但是我将放弃它的“智力”。

我该怎么办? 谢谢你们!

1 个答案:

答案 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来产生字符串文字。

请勿在没有充分理由的情况下在生产代码中使用此代码。使用预处理器玩游戏时应谨慎使用。