为了解决频繁的函数调用,增加时间和空间的花销而造成的效率低下问题,C++提供了内联(inline) 函数,在编译时将函数体嵌入到调用处,省去了函数调用的开销。
调用函数实际上是将程序执行顺序从函数调用处跳转到函数所存放在内在中的某个地址,将调用现场保留,跳转到那个地址将函数执行,执行完毕后再回到调用现场,所以频繁的函数调用会带来很大开销。
内联函数其实只是在函数定义前面加上一个inline
关键字,其格式如下:
inline 返回值类型 函数名(参数列表)
{
//C++语句
}
示例:
#include <stdio.h>
#include <stdlib.h>
inline void func(void)
{
printf("this is inline function\n");
}
int main()
{
func();
return 0;
}
这样虽然节省了开销,但是又会造成代码膨胀,因此一般都将结构简单语句少的函数定义为内联函数。内联函数中不可以包含复杂的控制语句,注意递归函数是不可以定义成内联函数的。
inline
只是建议编译器将函数嵌入到调用处,编译器会根据函数的长度、复杂度等自行决定是否把函数作为内联函数来调用。