什么时候我应该写关键字内联的函数/方法在c++ ?
在看到一些答案后,一些相关的问题:
在c++中,什么时候我不应该为函数/方法写关键字“内联”? 什么时候编译器不知道什么时候使一个函数/方法'内联'? 当一个应用程序为一个函数/方法写“内联”时,它是否重要?
什么时候我应该写关键字内联的函数/方法在c++ ?
在看到一些答案后,一些相关的问题:
在c++中,什么时候我不应该为函数/方法写关键字“内联”? 什么时候编译器不知道什么时候使一个函数/方法'内联'? 当一个应用程序为一个函数/方法写“内联”时,它是否重要?
当前回答
1)如今,几乎从来没有。如果内联一个函数是个好主意,编译器会在没有你帮助的情况下完成它。
2)。看到# 1。
(经过编辑,反映出你把问题分成了两个问题……)
其他回答
F.5:如果一个函数非常小并且对时间要求很高,那么就内联声明它
原因:一些优化器在没有程序员提示的情况下很擅长内联,但不要依赖它。测量!在过去40年左右的时间里,我们一直被承诺在没有人类提示的情况下,编译器可以比人类更好地内联。我们还在等待。指定inline(在类定义中编写成员函数时显式或隐式)可以鼓励编译器更好地完成工作。
来源:https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines.html Rf-inline
有关示例和异常,请访问源代码(参见上面)。
1)如今,几乎从来没有。如果内联一个函数是个好主意,编译器会在没有你帮助的情况下完成它。
2)。看到# 1。
(经过编辑,反映出你把问题分成了两个问题……)
在进行模板特化时,仍然需要显式内联函数(如果特化在.h文件中)
在c++中,什么时候我不应该为函数/方法写关键字“内联”?
如果函数在头文件中声明,并在.cpp文件中定义,则不应编写关键字。
什么时候编译器不知道什么时候使一个函数/方法'内联'?
没有这种情况。编译器不能使函数内联。它所能做的就是内联对函数的部分或所有调用。如果它没有函数的代码,它就不能这样做(在这种情况下,链接器需要这样做,如果它能够这样做的话)。
当一个应用程序为一个函数/方法写“内联”时,它是否重要?
不,那完全不重要。
在开发和调试代码时,不要使用内联。这会使调试复杂化。
添加它们的主要原因是为了帮助优化生成的代码。通常,这是以增加的代码空间换取速度,但有时内联可以同时节省代码空间和执行时间。
在算法完成之前将这种思想扩展到性能优化是不成熟的优化。