TL;DR一个枚举器可以容纳多少个元素,这个数字会大于64位或96位的数字吗?
在我使用C和C++的经验中,我发现将要编译的最大变量类型是96位(12字节),甚至这也是GCC 64位的非标准添加。因此,我开始考虑枚举器以及枚举器的大小。为了简单起见,我有一个名为foo:的枚举器类型
enum foo
{
//Insert types here
}
我们在枚举器中填充了大量类型:
enum foo
{
type1,
type2,
type3,
//Some keyboard-time later....
type9999999999999999999999999999999999999997,
type9999999999999999999999999999999999999998,
type9999999999999999999999999999999999999999,
type10000000000000000000000000000000000000000 //That's fifty zeroes
}
这会编译吗?(是的,我知道汇编会让我很好地了解冰河时期的持续时间,但仍然如此)我能用每一个type
s的值来声明一个foo
吗?
来自标准:
对于基础类型不是固定的枚举,基础类型是可以表示枚举中定义的所有枚举器值的整数类型如果没有一个积分类型可以表示所有枚举器值,则表示枚举格式不正确
因此,对于符合标准的编译器,如果没有可以容纳所有枚举器值的积分类型,则程序不应该进行编译。
这是工作草案https://isocpp.org/std/the-standard,但我怀疑这部分是否已经改变。