以下是该函数的内容:
针对以下函数:
inline void A() {
...
B();
...
}
编译器是否也会内联B?
如果不是,我应该将B内联以提高性能吗?
不,内联关键字只会导致 A 代码嵌入到调用者代码中。这不会影响 B 的内联。
此外,在 C++ 中,内联关键字只是对编译器的提示,编译器可以选择忽略它。现代编译器会决定函数是否需要内联,即使没有使用关键字。
一些评论者没有提到的是,有时inline不仅仅是编译器的提示,而是一个必须使用的关键字。当我们在头文件中放置一个非模板函数的定义,并且这个头文件被多个.cpp文件包含时,就会出现这种情况。在这种情况下,如果没有inline,将会触发链接错误。事实上,这是唯一需要输入这6个字符的情况。在其他情况下,编译器将尽可能使用内联 - 不管是否存在这个关键字。
inline
解决了链接器错误? - Monster Hunterinline
时,这只是向编译器发出一个提示,表明这个特定的函数应该被内联。然后编译器会决定是否要将其内联。对于像在A()
中调用B()
的嵌套调用也是如此。inline
说明符,但这只是一个风格问题 - 像GCC这样的现代优化编译器将自动进行优化。
inline
根本不是提示。 - ShadowRanger