c++ 内联函数
什么是内联函数
以inline修饰的函数叫做内联函数,编译时c++编译器会在"调用内联函数的地方"展开,没有函数压栈的开销。内联函数提升程序的运行效率。
int add(int left ,int right)
{
return left+right;
}
int mian()
{
int ret=0;
ret = add(1,2)//汇编代码是call add(12c107dh)
return 0;
}
而内联函数
inline int add(int left ,int right)
{
return left+right;
}
int mian()
{
int ret=0;
ret = add(1,2);//汇编代码是
//mov eax,1
//add eax,2
//mov dword ptr[ret],eax
return 0;
}
内联函数的特性
- 内联函数时一种以空间换区时间的做法,省去调用函数额开销。所以代码很长或者有循环/递归的函数不适宜使用作为内联函数。
- inline对于编译器而言只是一个建议,编译器会自动优化,如果发现inline的函数中有循环递归等编译器自动优化是会忽略掉内联。
- inline 不建议声明和定义分离,分离会导致链接错误,因为inline被展开,就没有函数地址了,链接就会找不到。