C++ G++;“问题”;“指定的存储类别”;使用外部内联时出错

C++ G++;“问题”;“指定的存储类别”;使用外部内联时出错,c++,g++,lto,C++,G++,Lto,我使用链接时间优化(g++和ld命令行中的-flto),我的一些方法声明(在标题中)被标记为extern-inline(在.cpp文件中仅inline)。编制收益率: ./Client/include/GVGLObjects.hpp:96:32: error: storage class specified for 'VertexBuffer' EFAST VertexBuffer(); ^ 以及其他方法

我使用链接时间优化(
g++
ld
命令行中的
-flto
),我的一些方法声明(在标题中)被标记为
extern-inline
(在
.cpp
文件中仅
inline
)。编制收益率:

./Client/include/GVGLObjects.hpp:96:32: error: storage class specified for 'VertexBuffer'
             EFAST VertexBuffer();
                                ^
以及其他方法和函数的一系列类似错误<代码>EFAST表示
外部内联


为什么启用LTO时会出现这种情况?如果不允许,我如何与内联分隔,LTO?

< p> <代码>外部内联< /C> >,而不是在C++中,尽管许多编译器允许它作为扩展名()。 大概GCC用于执行LTO()的任何机制和文件格式都与这种非标准的东西不兼容。很有趣,因为它描述了与内联和存储类相关的内容,并告诉我们在使用LTO时其中一些内容不可用(尽管实际的
-flto
描述没有特别调用
外部内联扩展)


<>你可能不希望C++中的代码< EFAST< /Cord>Me宏.< /P> C++中没有“外部行”这样的东西。所以,只要去掉它,让编译器和链接器完成他们的工作。@SamVarshavchik“extern inline”我想你的意思是?如果它在标题中标记为inline,extern在这里没有意义。不幸的是,用
FAST
inline
)替换
EFAST
)会产生相同的结果。@VladislavToncharov。显示的错误消息只有在指定了存储类时才有意义,而您现在声称没有这样做。哦,我的错。无意中看错了日志;当然不是。相反,它只是说“内联函数已使用但从未定义”,链接器抛出“未定义引用”。@VladislavToncharov然后我们需要一个新的问题,但这是一个新问题。