ISO C ++禁止对'enum'类型

时间:2016-08-04 21:29:39

标签: c++ clang

鉴于该计划:

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.

这些错误消息对我没有任何意义。我在这里看不到任何前瞻性的参考资料。

1 个答案:

答案 0 :(得分:30)

指定枚举的基础类型是C ++ 11语言功能。要获取要编译的代码,必须添加开关-std=c++11。这适用于GCC和Clang。

对于C ++ 03中的枚举,底层整数类型是实现定义的,除非枚举器的值不能适合int或unsigned int。 (但是,自VS 2005以来,Microsoft的编译器允许将枚举的基础类型指定为专有扩展。)