Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239286
  • 博文数量: 108
  • 博客积分: 3092
  • 博客等级: 中校
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 16:35
文章分类

全部博文(108)

文章存档

2011年(3)

2010年(43)

2009年(19)

2008年(43)

我的朋友

分类: C/C++

2009-03-14 21:02:38

预处理器可以解决频繁调用函数,开销较大的问题。比如在c中getchar和putchar常常被实现为宏。
使用宏时需要注意的问题:
1.不要忽视宏定义中的空格
 
#define f (x) ((x)-1)
那么f(x)=x(x-1)
这一规则不适用于宏调用而只对宏定义适用。
 
2.宏并不是函数
要注意优先级的问题,最好在宏定义中把每个参数都用括号括起来。
另外宏中还可能存在的一个副作用就是对参数多次求值,比如你的参数是一个带操作的参数,如p++,而且这个参数在宏定义中出现多次,那么它就会被操作多次。
 
3.宏并不是类型定义
对于类型定义,最好还是用typedef,因为它是真正的类型定义,而不仅仅是简单替换。
阅读(642) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~