用于下列职能:
inline void A() {
...
B();
...
}B也被编译器内联了吗?
如果没有,我应该让B内联以提高性能吗?
发布于 2015-09-30 20:56:02
不,内联关键字只会导致A代码在调用方代码中内联。这不会影响B的内衬。
此外,在c++中,内联关键字只是编译器的提示,编译器可以忽略它。现代编译器决定函数何时需要内联,即使不使用关键字。
发布于 2015-09-30 20:46:18
在大多数情况下,您可以轻松地将内联决策留给编译器,编译器将比您更清楚地知道什么时候和什么时候它将带来更好的性能。
在这种特定的情况下,我认为完全取决于编译器该做什么。
发布于 2015-09-30 21:09:05
然而,所有的评论者都没有提到,在某些情况下,内联并不仅仅是对编译器的提示,而是一个强制的关键字。当将函数的非模板定义放在由多个.cpp文件包含的头文件中时,就会发生这种情况。在这种情况下,没有内联将触发链接器错误。事实上,这是唯一的情况,一个人甚至应该费心键入这6个字符。在其他情况下,编译器将内联他们所能做的一切-不管这个关键字的存在。
https://stackoverflow.com/questions/32875295
复制相似问题