Eclipse中的Enum声明

我在Eclipse,Linux中编译一个c ++项目。

这个项目过去是在Windows下编译的。

我有这样的枚举声明:

enum nameofenum:UINT32 { one=0, two=1 } 

结果是日食中的错误。

  1. :UINT32是什么意思?
  2. 我怎样才能把这个声明切换到Linux?

谢谢!!

这看起来像一个强类型的枚举 ,这是一个C ++ 0x功能。 基本上,它指定了枚举的基本类型,所以onetwo将是UINT32

为了编译它,你需要一个支持C ++ 0x语言特定部分的编译器。 我相信GCC 4.4和Visual C ++在某种程度上支持强类型的枚举。

: UINT32声明枚举的基础类型; 这意味着枚举将由UINT32表示。

这是一个新的C ++功能,正在被称为强类型枚举的C ++ 0x中添加。 Visual C ++至少从Visual C ++ 2005开始支持它; 您正在使用的g ++版本可能不支持它。

至于你如何得到这个与g ++的工作,这取决于。 如果您没有任何依赖于特定基础类型的代码,那么您可以将其删除。 如果你的代码依赖于一个特定的基础类型,你可能会考虑使用枚举类型的基础类型(即使用UINT32而不是nameofenum )。 虽然这不是很好。

  1. UINT32是无符号的32位整数,所以你的枚举用4字节int表示。
  2. 这取决于。 我不知道确切的,但是你真的需要使用这个枚举为32位int? 也许你可以避免这个:UINT32声明?

: UINT意味着枚举标识符的底层类型是UINT 。 这是这里描述的微软扩展。 使它编译删除: UINT