我可以在 C++ 中定义枚举的大小吗?

Posted

技术标签:

【中文标题】我可以在 C++ 中定义枚举的大小吗?【英文标题】:Can I define the size of an enum in c++? 【发布时间】:2012-08-25 21:03:35 【问题描述】:

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

但是有可能以某种方式定义大小吗?例如,我想使用一个枚举,它的 sizeof 是自然字的大小(通常是 unsigned long)。

【问题讨论】:

【参考方案1】:

你可以在 C++11 中:

enum /*class*/ MyEnum : unsigned long

    Val1,
    Val2
;

(您可以为旧式enum 或新式enum class 指定枚举的大小。)

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

enum MyEnum

    Val1,
    Val2,
    ForceSize = 0xFFFFFFFF // do not use
;

...这将确保枚举至少为 32 位。

【讨论】:

嗯,这很快。谢谢你:)【参考方案2】:

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

【讨论】:

以上是关于我可以在 C++ 中定义枚举的大小吗?的主要内容,如果未能解决你的问题,请参考以下文章

C++ 是一种递归可枚举的语言吗?

我可以将枚举定义为另一个枚举案例的子集吗?

C++ 中有没有办法定义一个枚举,以便在访问时它的值必须是完全限定的?

在 c++ 中寻找可枚举的适当容器/函数

C++ 中的全局枚举

c++枚举类型的枚举类型的声明