C++小知识05 —— inline内联函数

本次更新的是内联函数,内联函数的出现主要是为了解决代码效率问题,也就是为了解决一些频繁调用的小函数大量消耗栈空间的问题。那么我们就来讲一下inline内联函数,本次主要通过用内联函数来对比普通函数进行讲解。

inline内联函数和普通函数的区别

开篇我们提到了内联函数能解决一些频繁调用小函数而造成大量消耗栈空间的问题,那么这里就有一个区别。

普通函数调用的时候,会造成栈空间的消耗,而内联不会。

我们通常把函数的调用过程称作函数的调用开销,函数的调用开销有参数压栈函数栈帧的开辟和退回的过程。

inline内联函数:在编译过程中,就没有函数的调用开销,在函数的调用点直接把函数的代码进行展开处理,相当于把函数的代码全部复制过来,而不是普通函数那样跳转。同样内联函数也不会生成函数符号。

使用关键字inline只是对编译器发出建议,把这个函数设定为内联函数,而不是用了inline,这个函数就是内联函数了,比如递归函数不会被处理为内联函数,函数的代码过多,也不会被处理为内联函数

同时注意一点:debug版本上对代码进行运行,inline不起作用,inline只有在release版本才能出现,因为debug是对代码进行调试,调试时内联会造成调试失败,当然这是编译器需要考虑的问题,我们只用知道,内联函数生效只有在release版本中。

现在来总结一下区别:

普通函数有标准的函数调用开销。

内联函数是编译阶段,在函数调用点对函数代码的展开,省去了函数调用开销。如果这个函数在短时间调用多次,并且这个函数非常简单,我们就设置为内联函数。并不是加了inline就是内联函数,是否处理成内联函数由编译器决定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员弘羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值