【发布时间】:2016-12-11 04:31:23
【问题描述】:
给定程序:
enum E : int
{
A, B, C
};
g++ -c test.cpp 工作得很好。但是,clang++ -c test.cpp 给出以下错误:
test.cpp:1:6: error: ISO C++ forbids forward references to 'enum' types
enum E : int
^
test.cpp:1:8: error: expected unqualified-id
enum E : int
^
2 errors generated.
这些错误消息对我来说没有任何意义。我在这里看不到任何前向引用。
【问题讨论】:
-
FWIW,GCC 现在(从 5 或 6 开始)使用
‑std=c++14作为默认编译,而 Clang 仍然使用‑std=c++98AFAIK。 -
我认为如果您包含编译器版本和选项会有所帮助。
-
这对我来说似乎是一个合理的问题,它不是印刷错误,也不是寻求调试帮助但不包含代码和错误消息的问题。
-
没有投票,但是当您使用 C++11 功能并收到奇怪的错误消息时,首先要尝试使用
-std=c++11 -
当时不知道这是 C++11 的特性。语法不是新的——MS 编译器至少从 VS2005 开始就支持这种语法。