宏非常频繁地用于执行简单的计算,比如在两个表达式中寻找较大(小)的一个“
#define MAX( a, b ) ( (a) > (b) ? (a) : (b) )
为什么不用函数来完成这个任务呢,有两点
1、首先调用和从函数返回的代码很可能比实际执行的这个小型计算工作的代码更大,所以使用宏比使用函数在程序的规模和速度上都更上一筹。
2、更为重要的是,函数的参数必须是一个特定的类型,所以说,宏是与类型无关的(即使用回调函数来处理,我们依然需要为每个不同的数据类型匹配不同的比较函数)。
另一个常用的宏
#define MALLOC(n, type) ( (type *)malloc( (n) * sizeof( type ) ) )
宏的副作用 , 程序中每处调用宏的地方, 都会插入文字拷贝,所以除非宏很短,否则会大量激增代码。
另外 作为约定,我们将宏全部大写。
阅读(1781) | 评论(0) | 转发(0) |