我正在Eclipse,Linux中编译一个c ++项目。
该项目过去是在Windows中编译的。
我有这样的枚举声明:
enum nameofenum:UINT32
{
one=0,
two=1
}
结果是eclipse出错。
:UINT32
是什么意思?谢谢!
答案 0 :(得分:4)
看起来像strongly typed enum,这是一个C ++ 0x功能。基本上,它指定了枚举的基础类型,因此one
和two
将是UINT32
s。
要编译它,您需要一个支持C ++ 0x语言的这个特定部分的编译器。我相信GCC 4.4和Visual C++在某种程度上支持强类型枚举。
答案 1 :(得分:2)
: UINT32
声明枚举的基础类型;这意味着枚举将由UINT32
表示。
这是一个新的C ++特性,它被添加到C ++ 0x中,称为强类型枚举。 Visual C ++至少从Visual C ++ 2005开始就支持它;你正在使用的g ++版本可能不支持它。
至于你如何使用g ++,这取决于。如果您没有任何依赖于特定基础类型的代码,那么您可以将其删除。如果您确实拥有依赖于特定基础类型的代码,则可以考虑将枚举类型的使用替换为基础类型(即,使用UINT32
而不是nameofenum
);但这并不是很好。
答案 2 :(得分:0)
答案 3 :(得分:0)
: UINT
表示枚举标识符的基础类型为UINT
。
它是Microsoft扩展描述的here。要使其编译,请删除: UINT
。