放大 Myrtveit
为了让编译器内联函数调用,它需要有完整的定义。如果函数没有在头文件中定义,编译器只有声明,不能内联函数,即使它想内联。
因此,我通常定义我认为编译器可能希望内联到头文件中的短函数。
通过全程序优化(/LTCG和/GL),是否不再需要在头文件中定义函数以允许内联它们?
除了在某些情况下使用模板之外,还有其他原因在头文件中定义函数吗?
斯特凡诺斯·巴齐奥蒂斯
一个原因是因为您想要分发单头库,例如STB。此外,链接速度非常慢,即使使用黄金和 LLD 等新链接器也是如此。因此,您可能希望避免链接,而是将所有内容包含在一个文件中。
这可以超越链接,而只是函数定义。这个想法通常只包含一次以减少编译时间,因为 C++ 编译模型非常糟糕和缓慢,部分原因是需要重新编译。这就是统一构建的思想。
如果您认为统一构建听起来超级愚蠢,请考虑育碧(至少曾经)使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
编辑于
我来说两句