【问题标题】:preprocessor function and object like macros预处理器函数和对象,如宏
【发布时间】:2013-11-06 11:05:25
【问题描述】:
#define NAME RAGHU
#define NAIVE_STR(x) #x
int main()
{
printf("%s", NAIVE_STR(NAME)); 
getch();
return 0;
}    

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

【问题讨论】:

  • 不使用#define NAME "RAGHU"有什么原因吗?

标签: c-preprocessor


【解决方案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) 只返回 RAGHU

【讨论】:

猜你喜欢
  • 2010-11-11
  • 2011-03-20
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
相关资源
最近更新 更多