【发布时间】:2019-12-03 18:15:54
【问题描述】:
我使用链接时优化(g++ 和ld 命令行中的-flto)并且我的一些方法声明(在标题中)被标记为extern inline(并且只是inline 在.cpp文件)。编译产量:
./Client/include/GVGLObjects.hpp:96:32: error: storage class specified for 'VertexBuffer'
EFAST VertexBuffer();
^
还有一堆其他方法和函数的类似错误。 EFAST 表示extern inline。
为什么在启用 LTO 时会发生这种情况?如果不允许,如何将声明和定义与内联和 LTO 分开?
【问题讨论】:
-
C++ 中没有“外线”之类的东西,as per this answer。所以,摆脱它,让编译器和链接器完成它们的工作。
-
@SamVarshavchik "extern inline" 我想你的意思是?
-
如果它在标题中,将其标记为内联,extern 在这里没有意义。