C:内联关键字值得吗?

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

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

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

是的,它足够聪明。 但是,在过去40年中根本没有取得进展的是C程序的构建方式。 它仍然是一次一个源代码文件。

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

它总是值得明确的意图。

值得注意的是,编译器甚至不需要内联它是否认为它更好。

标准说

7.1.2函数说明符

带有内联说明符的函数声明(8.3.5,9.3,11.4)声明了一个内联函数。 内联说明符向实现指示在调用点处函数体的内联替换优先于通常的函数调用机制。 在呼叫点执行此内联替换不需要实现; 但是,即使省略了这种内联替换,仍应遵守7.1.2定义的内联函数的其他规则。

因此,我将inline比作HTML格式 – 这是一个很好的做法,一直使用自动关闭。 但有人可能会争辩说,几乎所有的浏览器实现都对待

完全一样,IMO错过了这一点。

正如其他人所指出的那样,这可能与当前的绩效价值无关。 但我认为它仍然很好地作为一种语义,意图传达关键词。