【发布时间】:2015-03-08 20:06:01
【问题描述】:
假设我们喜欢以下头文件:
Header1.h
#include "Header2.h"
class A
{
public:
void Function();
}
inline void A::Function()
{
// Code ...
OtherFunction(); // Function from Header2.h
// Code ...
}
如果编译器确实选择内联Function,调用OtherFunction会发生什么:
- 如果
OtherFunction定义可用于当前翻译单元,它是否也可能内联在Function的正文中? (基本上可以嵌套内联吗?) - 如果
OtherFunction定义不适用于当前翻译单元,它是否仍然是一个简单的函数调用,而它周围的代码会被内联? (在编译器选择内联Function的情况下)
【问题讨论】:
-
这完全取决于编译器,选择内联的内容。
-
您可以将内联视为#includ-ing 函数而不是调用它。大致。 OtherFunction 的代码无论如何都会被执行。
-
1.是的。 2.也许;这将需要 LTO。