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