C:内联关键字值得吗?

Suu*_*aku 8 c performance inline

使用inline关键字是否值得,或者编译器足够聪明,知道何时需要内联函数?

Han*_*ant 15

是的,它足够聪明.但是,在过去的40年里,没有取得任何进展的是C程序的构建方式.它一次只是一个源代码文件.

因此,要在多个.c文件中内联函数,请将函数定义放在.h文件中.如果你不将它们标记为内联,链接器会抱怨多个定义.

  • 说"内联"意味着"允许多个定义"是完全错误的.这个问题是关于C语言,而不是C++.C没有`extern inline`函数,`inline`关键字在没有`static`的情况下是无效的,并且永远不允许函数的多个定义. (11认同)
  • +1,`inline`现在意味着"允许多个定义".事实上它也是编译器"快速调用此函数"的暗示是一个无关且无关紧要的副作用:-)我认为并不是"程序构建方式"没有进展 - 一些编译器/链接器有.但是,标准允许的最低共同标准还没有提高. (2认同)

bra*_*amp 9

编译器非常聪明,并且有多个指标可以确定某些内容是否值得内联.但有时候开发人员会知道应用程序将如何运行,并且知道内联编译器不会自动执行的操作.但是,除非我做了一些基准测试并且发现内联会提高我的性能,否则我绝不会手动内联.

您可以阅读有关GCC如何使用内联的更多信息.