鉴于该计划:
enum E : int
{
A, B, C
};
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)
这些错误消息对我没有任何意义.我在这里看不到任何前瞻性参考.
Vla*_*eev 30
指定枚举的基础类型是C++ 11语言功能.要获取要编译的代码,必须添加开关-std=c++11
.这适用于GCC和Clang.
对于C++ 03中的枚举,底层整数类型是实现定义的,除非枚举器的值不能适合int或unsigned int.(但是,自VS 2005以来,Microsoft的编译器允许将枚举的基础类型指定为专有扩展.)