【发布时间】:2012-08-25 21:03:35
【问题描述】:
据我所知(从我在 cpp 编程语言中读到的内容),大小将是“某种可以保持其范围且不大于 sizeof(int) 的整数类型的大小,除非枚举器不能是表示为 int 或 unsigned int"。
但是有可能以某种方式定义大小吗?例如,我想使用一个枚举,它的 sizeof 是自然字的大小(通常是 unsigned long)。
【问题讨论】:
标签: c++
据我所知(从我在 cpp 编程语言中读到的内容),大小将是“某种可以保持其范围且不大于 sizeof(int) 的整数类型的大小,除非枚举器不能是表示为 int 或 unsigned int"。
但是有可能以某种方式定义大小吗?例如,我想使用一个枚举,它的 sizeof 是自然字的大小(通常是 unsigned long)。
【问题讨论】:
标签: c++
你可以在 C++11 中:
enum /*class*/ MyEnum : unsigned long
{
Val1,
Val2
};
(您可以为旧式enum 或新式enum class 指定枚举的大小。)
您还可以通过有趣的技巧来增加枚举的最小大小,利用您引用的句子的最后一个短语:
enum MyEnum
{
Val1,
Val2,
ForceSize = 0xFFFFFFFF // do not use
};
...这将确保枚举至少为 32 位。
【讨论】:
在 C++11 中,您可以使用枚举类,您可以在其中指定基础类型。在 C++03 中没有解决方案。
【讨论】: