ECl*_*son 6 c++ performance inline
很久以前我被告知通过使用关键字内联并在头文件中写入正文来制作内联调用的简短函数/方法.这是为了优化代码,因此实际的函数调用没有开销.
今天它看起来如何?现代编译器(在本例中为Visual Studio 2010)是自动内联这样的短函数还是自己仍然"必要"?
inline一直是编译器的暗示,而现在编译器在很大程度上就这方面做出了自己的决定(参见参考资料register).
为了扩展函数内联,编译器必须已经看到了该函数的定义.对于仅在一个转换单元中定义和使用的函数,这没有问题:在使用之前将定义放在某处,编译器将决定是否内联函数.
对于在多个转换单元中使用的函数,为了使编译器能够看到函数的定义,定义必须放在头文件中.当你这样做时,你需要标记该函数inline,告诉编译器和链接器可以确定该函数的定义不止一个.(好吧,我想你可以制作这个功能static,但最后你可能会浪费多个副本的空间)
| 归档时间: |
|
| 查看次数: |
1901 次 |
| 最近记录: |