打开整个程序(也称为链接时间)优化后,内联是否会受到方法实施位置的影响?
如果没有打开整体程序优化,在头文件中公开声明但在匹配的 cpp 中实现的方法显然不能在编译不同的翻译单元(包括上述头文件的不同 cpp)期间内联。因此,如果您希望该方法可内联,则必须在导出标头中实现它。
对于整个程序优化,内联方式是否在标头中实现该方法是否有任何区别?也就是说,编译器是否有可能/有可能错过内联在 cpp 中实现的方法的机会,如果该方法在标头中实现,它不会错过?
我对 Apple 的 Clang(-flto
标志)和 Visual Studio(/GL
标志)的答案特别感兴趣。