【问题标题】:Inline function(C++) is efficient, why don't we define every function as inline function? [duplicate]内联函数(C++)是高效的,为什么我们不把每个函数都定义为内联函数呢? [复制]
【发布时间】:2016-02-11 16:05:23
【问题描述】:

内联函数效率很高,所以我很困惑为什么不将每个函数都定义为内联函数?

【问题讨论】:

标签: c++


【解决方案1】:

标记每个函数内联不会使您的函数内联它完全依赖于编译器!有时它可能是内联的,有时它可能不是。如果涉及循环,inling 也不会为您带来任何限制。

【讨论】:

    【解决方案2】:

    除了调用开销,我要提一下,粘贴代码可以让编译器在调用站点进一步优化

    在少数情况下无法内联:

    1. 从共享对象链接的过程
    2. 使用函数指针调用的回调函数
    3. 递归函数(非尾递归)即(函数调用不需要挂起等待递归调用返回)(可以轻松自动转换为迭代形式)

    内联还会影响可执行文件的维度,最终导致更多的磁盘使用和更长的加载时间。

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      相关资源
      最近更新 更多