"内联"功能的实用性

Sta*_*ked 4 c++

内联有两个方面:

  • inline如果编译器确定无法内联函数,则将忽略该关键字.
  • 有一个编译器优化(在Visual Studio上,我不知道GCC)告诉编译器尽可能内联所有函数.

由此我得出结论,我从不需要打扰内联.我只需打开发布版本的编译器优化.

或者是否有任何情况下首选手动内联?

jal*_*alf 12

inline关键字有两个功能:

  • 它可以作为编译器执行内联优化的提示(这在现代编译器上基本无用,它可以在有或没有关键字的情况下内联编译)
  • 它告诉编译器/链接器忽略一个定义规则:inline'd符号可以在多个转换单元中定义(通常因为它在头中定义,包含在多个文件中).通常,这会导致链接器错误,但在使用inline关键字时允许它.


小智 7

是的,如果要将函数放在头文件中,并将该文件包含在多个翻译单元中.这实际上是inlineC++ 的主要目的.