1. C和C++中短小函数的实现
- C为宏定义实现。
#define Max(a,b) ( a>b?a:b)
- C++: 内:内联函数,函数名前加上关键字inline
inline int Max(a, b)
{
return a>b?a:b;
}
- 两者比较
-
宏定义
- 宏不是函数
- 预处理器用复制宏代码的方式替换函数的调用,避免了函数调用压栈入栈的过程,从而提高了效率。
- 宏是在编译前即编译预处理阶段将宏名替代成宏体,即字符串替换
- 宏不检查参数类型而直接进行替换,导致错误参数类型也能被替换。
-
内联函数inline
- 其本质还是函数
- 在编译时将有关代码直接嵌入到调用处,从而减少普通函数调用时的资源消耗,加快程序运行的速度。
- 编译时会检查参数类型
- 相比宏,内联函数更安全可靠。
- 内联函数适用与只有几行代码,不包括for while switch 递归语句,并且被不断重复调用的函数。
- 内联函数不需要寻址,在函数调用处直接执行编译时嵌入的代码。
- 参数传递机制与普通函数相同
-
普通函数
- 被调用时,首先到函数的入口地址执行函数体,再回到调用函数的地方继续执行。
- 函数调用存在开销
-