使用;定义;在C语言中,同时作为int和char

使用;定义;在C语言中,同时作为int和char,c,c-preprocessor,C,C Preprocessor,我试图用一个#定义我们如下,int和char #define name joe 这样,它是int,但我希望能够打印出这个#定义并得到Joe这个词。 我知道我可以用 #define name "Joe" 但我会放弃它的“智力能力” 我能做什么? 伙计们 预处理器操作符将宏参数转换为字符串文字。输出: #include <stdio.h> #define name Joe #define Helper(x) #x #define Stringify

我试图用一个#定义我们如下,int和char

#define name joe
这样,它是int,但我希望能够打印出这个#定义并得到Joe这个词。 我知道我可以用

#define name "Joe"
但我会放弃它的“智力能力”

我能做什么? 伙计们

预处理器操作符将宏参数转换为字符串文字。输出:

#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);
}
#包括
#定义名称Joe
#定义辅助对象(x)#x
#定义字符串化(x)辅助对象(x)
内部主(空)
{
int name=4;
printf(“%s是%d.\n”,Stringify(name),name);
}
是:

乔4岁

两个宏是必需的,因为在应用
#
之后,才会执行
Stringify
中的
x
扩展。因此,我们需要
Stringify
来展开
x
,然后
Helper
来生成字符串文本

没有充分的理由,不要在生产代码中使用此选项。使用预处理器玩游戏时应小心。

预处理器操作符将宏参数转换为字符串文字。输出:

#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);
}
#包括
#定义名称Joe
#定义辅助对象(x)#x
#定义字符串化(x)辅助对象(x)
内部主(空)
{
int name=4;
printf(“%s是%d.\n”,Stringify(name),name);
}
是:

乔4岁

两个宏是必需的,因为在应用
#
之后,才会执行
Stringify
中的
x
扩展。因此,我们需要
Stringify
来展开
x
,然后
Helper
来生成字符串文本


没有充分的理由,不要在生产代码中使用此选项。使用预处理器玩游戏时要小心。

你说的“智力能力”是什么意思?第一个示例不生成和整数值,它只生成一个label.int函数,就像在与枚举进行比较时使用它一样:“enum namenum joe==name”这就是您要问的吗?“智力能力”是什么意思?第一个示例不生成和整数值,它只生成一个label.int函数,就像在与枚举进行比较时使用它一样:“enum namenum joe==name”这就是您要问的吗?把我揍一顿。我要删除我的答案,把我揍一顿。我将删除我的答案。