Chinaunix首页 | 论坛 | 博客
  • 博客访问: 329580
  • 博文数量: 69
  • 博客积分: 2090
  • 博客等级: 大尉
  • 技术积分: 708
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-23 09:31
文章分类

全部博文(69)

文章存档

2012年(1)

2011年(4)

2010年(48)

2009年(14)

2008年(2)

我的朋友

分类:

2010-06-12 20:37:22

内联函数就是以关键字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) |
0

上一篇:虚基类

下一篇:函数指针

给主人留下些什么吧!~~