预处理器功能和像宏一样的对象

时间:2013-11-06 11:05:25

标签: c-preprocessor

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

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

1 个答案:

答案 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}}