C++ inline函数

1.inline函数,比宏好得多。调用inline函数不需要蒙受函数调用所招致的额外开销

2.编译器或许会优化inline函数本体。编译器最优化机制通常被设计用来浓缩那些“不含函数调用”的代码,当你inline某个函数时,或许编译器就因此有能力对它(函数本体)执行语境相关最优化;

3.inline函数的原理是,将”对此函数的每一个调用“都以函数本体替换之。自然,这样可能增大目标文件的大小。

4.可执行文件变大,内存换页行为增大,指令高速缓存装置的击中率降低,从而影响运行效率。如果inline函数本体很小,编译器针对”函数本体“所产出的码可能小于”函数调用“所产出的码,这样综合之后,目标文件大小基本不变甚至更小,相应的指令击中率也可能达到最优。所以,一般可以对简单的函数inlining,不对太过复杂的函数inlining;

5.inline函数只是对编译器的申请,不是强制命令。

6.inline函数通常被置于头文件中。因为大多建置环境(build environments)在编译过程中进行inlining,而为了将一个”函数调用“替换为”被调用函数的本体“,编译器必须知道那个函数长什么样,inlining在大多数C++程序中是编译期行为

7.有时候编译器有意愿inlining某个函数,还是可能为该函数生成一个函数本体。例如,如果程序要取某个inline函数的地址,编译器通常必须为此函数生成outlined函数本体;

8.inline函数无法随着程序库的升级而升级。也就是说,即使程序库(有inline函数)升级了,但用到inline函数的客户端都必须将它重新编进程序中。如果程序库是非inline函数,客户端只需重新链接就好了,在此基础上,如果客户端是动态链接程序库,客户端将在不知不觉中使用升级的程序库;

9.大部分调试器对inline函数束手无策。建议一开始先不要将任何函数声明为inline。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值