关于内联有两件事:
inline
关键字。由此我得出结论,我从不需要打扰内联。我只需打开发布版本的编译器优化。
或者是否有任何首选手动内联的情况?
答案 0 :(得分:12)
inline
关键字有两个功能:
inline
'd符号可以在多个转换单元中定义(通常因为它在头中定义,包含在多个文件中) 。通常,这会导致链接器错误,但在使用inline
关键字时允许这样做。答案 1 :(得分:7)
是的,如果要将函数放在头文件中,并将该文件包含在多个翻译单元中。这实际上是C ++中inline
的主要目的。
答案 2 :(得分:1)
手动使用inline
可能对较旧的编译器或不太复杂的编译器(例如嵌入式开发的编译器)很有用。如果您使用的是visual studio,我认为您通常不需要使用inline
关键字。
答案 3 :(得分:1)
如果您希望能够从库中内联函数,那么Inline也很有用。只有将函数的代码放在头文件中(需要内联),编译器才能内联函数。当然,无论是否内联函数,编译器仍然是上升的。
答案 4 :(得分:1)
构建共享库时,inline
关键字会产生副作用。内联函数不会导出到符号表中,也不会导出到库的二进制文件中。因此,inline
关键字在共享库方面至关重要,因为编译器将无法内联导出的函数。另一方面,库的内联函数将始终内联,因为它不存在于库的二进制形式中。
答案 5 :(得分:0)
您可能不希望在任何可能的地方内联。这可能会增加二进制文件的大小。您可能会选择一些不太常用的函数,内联可以在不增加位大小的情况下更快地运行
答案 6 :(得分:0)
这取决于您的环境以及您想要做什么,因此很难说内联是否可取。
这篇link有一些关于内联的有趣读物。还有一些合理的建议(几乎归结为:避免这样做)
答案 7 :(得分:0)
阅读Herb Sutters关于内联的评论:
http://www.gotw.ca/gotw/033.htm