0
#define NAME RAGHU
#define NAIVE_STR(x) #x
int main()
{
printf("%s", NAIVE_STR(NAME)); 
getch();
return 0;
}    

我们如何修改代码以便打印我们在 NAME 中定义的任何内容?

4

1 回答 1

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)它时,它看不到#并替换NAMERAGHU然后调用NAIVE_STR(RAGHU)NAIVE_STR(RAGHU)返回RAGHU

于 2013-11-06T11:16:55.643 回答