#define NAME RAGHU
#define NAIVE_STR(x) #x
int main()
{
printf("%s", NAIVE_STR(NAME));
getch();
return 0;
}
我们如何修改代码以便打印我们在 NAME 中定义的任何内容?
#define NAME RAGHU
#define NAIVE_STR(x) #x
int main()
{
printf("%s", NAIVE_STR(NAME));
getch();
return 0;
}
我们如何修改代码以便打印我们在 NAME 中定义的任何内容?
你可以使用类似的东西
#define NAME RAGHU
#define NAIVE_STR(x) #x
#define DEF_TO_STRING(x) NAIVE_STR(x)
int main()
{
printf("%s", DEF_TO_STRING(NAME));
getch();
return 0;
}
这就是定义的工作方式。当您调用NAIVE_STR(NAME)
预处理器时,会看到#x
并且不会x
用它的值替换,因此会返回字符串NAME
。但是当您调用DEF_TO_STRING(NAME)
它时,它看不到#
并替换NAME
为RAGHU
然后调用NAIVE_STR(RAGHU)
并 NAIVE_STR(RAGHU)
返回RAGHU