Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30784
  • 博文数量: 11
  • 博客积分: 480
  • 博客等级: 下士
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-22 17:29
文章分类

全部博文(11)

文章存档

2009年(11)

我的朋友

分类: C/C++

2009-02-05 10:51:12

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) |
给主人留下些什么吧!~~