内联函数(C ++)是有效的,为什么我们不将每个函数定义为内联函数?

时间:2016-02-11 16:05:24

标签: c++

在线函数是非常有效的,所以我很困惑为什么不将每个函数定义为内联函数?

2 个答案:

答案 0 :(得分:1)

标记内联的每个函数不会使你的函数内联完全依赖于编译器!有时它可能内联有时它可能不会。如果它涉及循环,那么inling也不会让你获得任何好处。

答案 1 :(得分:0)

除了调用开销之外,我会提到粘贴代码允许编译器在呼叫站点进行进一步优化

很少有案例无法内联:

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

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