据我所知(从我在cpp编程语言中读到的),大小应该是“一些可以保持其范围的整数类型的大小,并且不大于sizeof( int ),除非枚举数不能表示为int或unsigned int”。
但是有没有可能以某种方式定义大小呢?例如,我想使用一个枚举,它的sizeof是自然单词的大小(通常是无符号的long)。
发布于 2012-08-26 05:06:24
您可以在C++11中执行以下操作:
enum /*class*/ MyEnum : unsigned long
{
Val1,
Val2
};
(您可以为旧式enum
或新式enum class
指定枚举的大小。)
您还可以通过有趣的技巧增加枚举的最小大小,利用您引用的句子的最后一个短语:
enum MyEnum
{
Val1,
Val2,
ForceSize = 0xFFFFFFFF // do not use
};
…这将确保枚举至少是32位的。
发布于 2012-08-26 05:06:26
在C++11中,您可以使用枚举类,您可以在其中指定底层类型。在C++03中没有解决方案。
https://stackoverflow.com/questions/12125637
复制相似问题