C 语言的宏定义中有如下应用:
#define doit(name) pr(#name,name)
那么#name是什么意思呢,它相当于将name变为name本身的字符串。
如:doit(RLIMIT_CORE);
将会被预处理程序扩展为:
pr("RLIMIT_CORE",RLMIT_CORE);
下面是一个例子程序和结果:
#include
#include
#define myprint(name) pr(#name)
#define myprint2(name) pr(name)
void pr(char *x)
{
printf("%s\n",x);
}
int main()
{
char *p = "MNBBV";
char *q = "fas";
myprint(p);
myprint(q);
myprint2(p);
myprint2(q);
myprint(MNBBV);
myprint(fas);
}
执行结果:
p
q
MNBBV
fas
MNBBV
fas
阅读(562) | 评论(0) | 转发(0) |