如何明智的内联

理解:内联函数不需要承担函数调用的开销,这点相对于宏来说更好。但在使用时还是需要注意:

  • 内联函数会增加整个代码的体积,造成的代码膨胀可能会导致不合理的页面调度行为(即系统颠簸)
  • 函数体过多会降低指令高速缓存的命中率,使取指令速度降低。但如果内联函数非常短,生成代码比函数调用生成的少得多,此时就可以带来更小的目标代码,更高的缓存命中率。
  • 内联只是提醒可能会被忽略

拒绝使用内联的情况

  • 内联复杂的函数(如含递归或循环的函数)
  • 简单的虚函数调用【因为虚函数需要等到运行时才能决定调用那个函数,而内联函数在编译期间就将调用处的被调用函数替代】
  • 不可用于构造、析构。

被外联的内联
在一个头文件中定义一个内联函数,若在源文件中使用,则为被外联的内联。若两个源文件中都使用了这个头文件、函数编译器报错,可在源文件中将被外联的内联函数声明为static函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值