Mag*_*eit 5 c++ inlining lto
为了使编译器内联函数调用,它需要具有完整的定义。如果头文件中没有定义该函数,则编译器只有声明,即使想内联该函数也无法内联。
因此,我通常定义一些短函数,我认为编译器可能希望将其内联到头文件中。
通过整个程序优化(/LTCG和/GL),是否不再需要在头文件中定义函数来允许它们内联?
除了在某些情况下使用模板之外,是否还有其他原因在头文件中定义函数?
小智 1
原因之一是您想要分发单标头库,例如STB。此外,即使使用 gold 和 LLD 等新连接器,连接速度也是出了名的慢。因此,您可能希望避免链接,而是将所有内容都包含在一个文件中。
这可以超越链接和函数定义的范围。这个想法是通常只包含所有内容一次以减少编译时间,因为 C++ 编译模型非常糟糕且缓慢,部分原因是内容需要重新编译。这就是统一构建的理念。
如果您认为统一构建听起来超级愚蠢,请考虑育碧(至少曾经)使用它。
归档时间:
4 年,1 月 前
查看次数:
302 次
最近记录: