很久以前我就被告知要通过使用关键字 inline 并将函数体写入头文件中来制作经常内联调用的短函数/方法。 这是为了优化代码,因此实际函数调用不会产生开销。
今天看起来怎么样?现代编译器(在本例中为 Visual Studio 2010)是否会自动内联如此短的函数,还是仍然“有必要”自己这样做?
最佳答案
inline
一直是对编译器的提示,如今编译器在这方面大部分都自行做出决定(参见register
).
为了内联扩展函数,编译器必须已经看到该函数的定义。对于仅在一个翻译单元中定义和使用的函数,这没有问题:在使用之前将定义放在某个地方,编译器将决定是否内联该函数。
对于在多个翻译单元中使用的函数,为了让编译器看到函数的定义,定义必须放在头文件中。当您这样做时,您需要将函数标记为 inline
以告诉编译器和链接器该函数有多个定义是可以的。 (好吧,我想你可以使函数static
,但是你最终可能会因为多个拷贝而浪费空间)
关于提高性能的 C++ 内联方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12414110/