首页 > 编程语言 > 详细

C++内联函数

时间:2019-05-10 22:26:01      阅读:127      评论:0      收藏:0      [点我收藏+]

内联函数的使用可以避免函数调用的开销


int max ( int a, int b )
{
    return a>b ? a: b;
}

对于以上函数,函数体只有一行,执行起来比求原来的表达还要慢。
在大多数机器上,一次函数调用包含一系列工作:调用前要先保存寄存器,并在返回是恢复;如果需要,可能还要拷贝实参;程序转向一个新的位置继续执行。这些操作由编译器自己完成,将它称为函数调用的基本开销。这就是说,即使函数体为空,在调用它的时候仍然耗费了一定的CPU.
为了避免这种低效率的事情发生,当发现函数体较短时,将函数声明为inline,此时编译器会做特定优化:

不使用函数调用机制,而是直接把代码逻辑直接“内联”到调用点上。

因为省去了函数的调用机制,代码的运行效率提高。
注:什么情况“长”,什么情况“短”,是由编译器自己衡量的。即使将函数声明为inline,编译器也不一定会按inline编译。如果它发现代码实际上很“长”,它还是会按函数第哦啊用的方式来编译。

即内联只是向编译器发出一个请求,编译器可以选择忽略这个请求。(编译器:我说了算)

C++内联函数

原文:https://www.cnblogs.com/elong1995/p/10846836.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!