24

据我所知(从我在 cpp 编程语言中读到的内容),大小将是“一些可以保持其范围且不大于 sizeof(int) 的整数类型的大小,除非枚举数不能表示为int 或作为无符号整数”。

但是有可能以某种方式定义大小吗?例如,我想使用一个枚举,其 sizeof 是自然字的大小(通常是无符号长整数)。

4

2 回答 2

54

您可以在 C++11 中:

enum /*class*/ MyEnum : unsigned long
{
    Val1,
    Val2
};

(您可以为 old-styleenum或 new-style指定枚举的大小enum class。)

您还可以通过有趣的技巧来增加枚举的最小大小,利用您引用的句子的最后一个短语:

enum MyEnum
{
    Val1,
    Val2,
    ForceSize = 0xFFFFFFFF // do not use
};

…这将确保枚举至少是 32 位的。

于 2012-08-25T21:06:23.853 回答
4

在 C++11 中,您可以使用枚举类,您可以在其中指定基础类型。在 C++03 中没有解决方案。

于 2012-08-25T21:06:25.800 回答