一位朋友告诉我,编译器内联比手动内联更好,但他无法解释为什么。使用内联关键字有什么好处,如果可以手动执行(除了反复编写同一段代码)?
答案 0 :(得分:1)
内联函数非常有用,当你的函数被调用太频繁而且小到足以适应缓存的内存时...如果编译器处理它,它可以决定使用这些参数,但是如果你对目标硬件有更多的了解,那么你也可以手动完成..
答案 1 :(得分:1)
Inline
的工作方式类似于编译器控制的复制/粘贴,这与预处理器宏完全不同:宏将被强制内联,将污染所有命名空间和代码,不会轻易可调试的,即使编译器将其裁定为低效也将完成。
通过将其标记为inline
,您可以将函数定义放在头文件中(即它可以包含在多个编译单元中,而不会让链接器抱怨)。
标记某些内容inline
并不能保证它会内联。这只是对编译器的建议。有时它不可能,例如当你有虚函数或者涉及递归时。有时编译器只选择不使用它。