内联函数inline的思考

内联函数,可以看作是编译期间的一种替换,其设计的目的是为了代替复杂的宏替换。因为宏替换是预编译期间做的,所以如果有问题,没有那么容易察觉出来。

内联函数在编译期间的替换会将函数的代码替换到调用它的地方,在汇编这一层来看,我们就不需要再在栈里保存主程序执行到的代码的内存地址等信息,这样就可以节约一点时间了。很多时候,这点时间是微乎其微的,使用内联函数节省时间的效果并不明显。

我不知道有没有强制内联这种东西,内联这种机制可能大部分还是属于编译器自己对代码的优化。不管你有没有加inline关键字,编译器都会有自己的判断来选择内联或者不内联。

所以说内联更像是程序员给编译器的建议,决定权在编译器。

内联函数是为频繁使用、并且过程不大的小型函数设计的,它是以增加ROM占用空间来节省函数调用的开销,内联函数使用不当就会造成代码膨胀,所以使用它一定要小心。

so, for function-like macros, prefer inline functions to #defines.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值