内联函数就是以关键字inline修饰的函数。
针对于内联函数,大家可能有会疑问:内联函数的作用是什么?内联函数的实现机制是什么?为什么内联函数的的函数体不能过大(内联函数一般只有几行代码)?
1、内联函数的作用是什么,内联函数的实现机制是什么?
在调用一般函数时,程序需要保护现场,并且跳转到函数起点的内存单元去执行函数,执行完函数后返回恢复现场,程序跳回到调用函数处执行原来的代码。因此来回的跳转和和保护现场以及恢复现场需要一定的开销。而编译器将用内联函数代码来替换函数调用,因此程序无需跳转,当然执行效率就比较高了。
2, 为什么内联函数的的函数体不能过大(内联函数一般只有几行代码)?
内联函数比较高的执行效率的代价是需要更多的内存空间。比如程序在N个地方调用内联函数,则内联函数将被展开N次。内联机制适用于小的并且被经常调用的函数。编译器展开很大的函数,将会很吃力。
#include <iostream>
using namespace std;
inline void function()
{
cout << "This is a inline function"<<endl;
}
int main(int argc,char **argv)
{
function();
return 0;
}
|
得到的结果为:
This is a inline function
主函数中调用内联函数function,编译器将funtion函数的代码展开到函数的调用处,也就是用function函数代码替换函数的调用。因此执行函数的时候省去了保护现场和跳转的一些开销。提高了函数执行的效率。
阅读(771) | 评论(0) | 转发(0) |