编译器内联是否比手动内联更好?

时间:2012-04-08 15:36:56

标签: inline inline-assembly

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

2 个答案:

答案 0 :(得分:1)

内联函数非常有用,当你的函数被调用太频繁而且小到足以适应缓存的内存时...如果编译器处理它,它可以决定使用这些参数,但是如果你对目标硬件有更多的了解,那么你也可以手动完成..

答案 1 :(得分:1)

Inline的工作方式类似于编译器控制的复制/粘贴,这与预处理器宏完全不同:宏将被强制内联,将污染所有命名空间和代码,不会轻易可调试的,即使编译器将其裁定为低效也将完成。

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

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