• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

inline内联函数为什么不能有循环语句

drepa 2017-12-06 浏览量:3436

1.JPG

        如题,在网上搜索关于内联函数的使用注意事项,上面提到了内联函数不能有循环节(while)和递归。递归不能出现在内联函数里很好理解,因为递归会占用大量堆栈使得内联函数出错,但是为什么循环不能出现在内联函数里呢?循环貌似不会占用大量堆栈吧?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 内联函数在编译时其实是会展开到调用处的,用空间换时间的方式来提高效率,对于循环之类的处理,展开空间要求比较高,而且很可能有很大的空间浪费,所以编译器在处理时即使有内联关键字也作为普通内容进行处理了。
    • 发布于 2017-12-06
    • 举报
    • 评论 2
    • 1
    • 0
drepa 回复了 xdsnet:说得在理 回复
电子老工程师 回复了 :电压不一样,反向电流不一样,工作电阻不一样,具体请看附件图片 回复

其他答案 数量:5
  •  说起来是不允许,但是如果你这样使用的话,编译器绝对不会报错!他只是把这样的内联函数作为一般函数来处理!因而也就没有起到提高效率的作用!
     如果你想用内联函数提高程序的效率,就不要这样做!
    • 发布于2017-12-06
    • 举报
    • 评论 2
    • 1
    • 0
drepa 回复了 Angel_YY :原来如此,谢啦 回复
电子老工程师 回复了  :包装区别,产品同一物料 回复

电子老工程师 回复了  :MC的是工业级,会有两种封装有插件有贴片, S开头的是汽车级, 回复

  • 不使用递归,肯定没的说,循环应该是可以的。内联本身就是直接翻译成语句,使用内联就是为了加快程序执行。
    • 发布于2017-12-06
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :数据手册没有给出误差范围,无法确认 回复

  • 内敛函数占内存,你用循环就更占内存了,一下子展开了,要循环可以,但是循环深度不能太多
    • 发布于2017-12-06
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :丝印具体信息资料没有说明,建议咨询一下供应商 回复

  • 允许肯定允许,编译器不会报任何错和警告,但是这样做的话这个inline函数就失去它的特点了。

    • 发布于2017-12-14
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :制造商 Rohm Semiconductor 制造商产品编号 MNR12ERAPJ222 回复

相关问题

问题达人换一批

inline内联函数为什么不能有循环语句