我在Eclipse,Linux中编译一个c ++项目。
这个项目过去是在Windows下编译的。
我有这样的枚举声明:
enum nameofenum:UINT32 { one=0, two=1 }
结果是日食中的错误。
:UINT32
是什么意思? 谢谢!!
这看起来像一个强类型的枚举 ,这是一个C ++ 0x功能。 基本上,它指定了枚举的基本类型,所以one
和two
将是UINT32
。
为了编译它,你需要一个支持C ++ 0x语言特定部分的编译器。 我相信GCC 4.4和Visual C ++在某种程度上支持强类型的枚举。
: UINT32
声明枚举的基础类型; 这意味着枚举将由UINT32
表示。
这是一个新的C ++功能,正在被称为强类型枚举的C ++ 0x中添加。 Visual C ++至少从Visual C ++ 2005开始支持它; 您正在使用的g ++版本可能不支持它。
至于你如何得到这个与g ++的工作,这取决于。 如果您没有任何依赖于特定基础类型的代码,那么您可以将其删除。 如果你的代码依赖于一个特定的基础类型,你可能会考虑使用枚举类型的基础类型(即使用UINT32
而不是nameofenum
)。 虽然这不是很好。
: UINT
意味着枚举标识符的底层类型是UINT
。 这是这里描述的微软扩展。 使它编译删除: UINT
。