1

一位朋友告诉我,编译器内联比手动内联更好,但他无法解释为什么。如果可以手动执行,使用 inline 关键字有什么好处(除了一遍又一遍地编写相同的代码)?

4

2 回答 2

1

当您的函数被过于频繁地调用并且足够小以适合缓存内存时,内联函数很有用......如果编译器处理它,它可以决定使用这些参数,但是如果您对目标硬件有更多的了解,您也可以这样做它手动..

于 2012-04-08T15:45:05.090 回答
1

Inline工作起来就像由编译器控制的复制/粘贴,这与预处理器宏有很大不同:宏将被强制内联,会污染所有的命名空间和代码,不容易调试,即使在编译器会认为它效率低下。

通过将其标记为inline,您可以将函数定义放在头文件中(即它可以包含在多个编译单元中,而不会引起链接器的抱怨)。

标记某些东西inline并不能保证它是内联的。这只是对编译器的建议。有时这是不可能的,例如当你有一个虚函数时,或者当涉及到递归时。有时编译器只是选择不使用它。

于 2012-04-08T15:53:10.647 回答