#define NAME RAGHU
#define NAIVE_STR(x) #x
int main()
{
printf("%s", NAIVE_STR(NAME));
getch();
return 0;
}
我们如何修改代码,以便我们在NAME中定义的内容得到打印?
答案 0 :(得分:1)
您可以使用类似
的内容#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)
只返回{{ 1}}