C 函数内联意味着什么?

新手上路,请多包涵

见标题:C++ 函数内联意味着什么?

原文由 user7545 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 364
2 个回答

该函数被放置在代码中,而不是被调用,类似于使用宏(概念上)。

这可以提高速度(没有函数调用),但会导致代码膨胀(如果函数使用 100 次,您现在有 100 个副本)。

您应该注意,这不会强制编译器使函数内联,如果它认为这是一个坏主意,它将忽略您。同样,编译器可能会决定为您内联普通函数。

这也允许您将整个函数放在头文件中,而不是在 cpp 文件中实现它(无论如何您都不能这样做,因为如果它被声明为内联,那么您会得到一个未解析的外部,除非当然只有那个 cpp 文件用过)。

原文由 Fire Lancer 发布,翻译遵循 CC BY-SA 4.0 许可协议

它只意味着一件事和一件事:编译器将省略函数的多个定义。

一个函数通常不能定义多次(例如,如果您将非内联函数定义放入头文件中,然后将其#include 到多个编译单元中,您将收到链接器错误)。将函数定义标记为“内联”会抑制此错误(链接器确保发生正确的事情)。

它并不意味着更多!

最重要的是,这并不意味着编译器会将编译后的函数嵌入到每个调用站点中。是否发生这种情况完全取决于编译器的突发奇想,通常 inline 修饰符几乎不会改变编译器的想法。编译器可以——并且确实——内联 标记为内联的函数,并且它可以 标记为内联的函数进行函数调用。

删除多个定义是要记住的。

原文由 DrPizza 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏