C或C ++中位域的最大大小?
可能重复:
struct bitfield max size(C99,C ++)
我可以在C或C ++的位字段中指定的位数是否有限制? 例如,我可以这样做:
struct HugeInt { int myInt: 1000; };
我问的是C和C ++,因为我知道语言规范有时会有所不同,并希望看看上面的例子是否可以保证在C或C ++中工作/不工作。
在C11,第6.7.2.1节,第4节:
指定位字段宽度的表达式应为整数常量表达式,其非负值不超过将指定的类型的对象的宽度,省略冒号和表达式。 如果该值为零,则声明不应具有声明者。
简而言之,如果它没有位字段部分,它必须介于0和类型的大小之间。
位字段’myInt’(1000位)的大小不能超过其类型的大小(int,通常为32位)