分类: C/C++
2014-10-15 09:25:34
函数跟宏看起来很像
两种程序对应的预编码
定义宏的 ,
定义函数的,
宏是由预处理直接替换展开的,编译器不知道宏的存在,函数是由编译器直接编译的实体,调用行
为由编译器决定,多次使用宏会导致程序代码量增加,函数是跳转执行的,因此代码量不会增加,
宏的效率比函数高,因为是直接展开,无调用开销,函数调时会创建活动记录,效率不如宏。
宏与函数一较高低
宏的效率比函数高,但是其副作用巨大,容易出错。
函数存在实参到形参的传递,因此无任何副作用,但是函数需要建立活动对象效率受影响。
结果宏还是有无可替代的优势
截图a11-a13
宏编写的_MINT_参数类型可以是int,float……宏的参数可以是类型名,这点是函数做不到的。
小结:宏能够接受任何类型的参数,高效易错;函数的参数必须是固定类型,低效不易错;宏可以
实现函数不能实现的功能。