C或C ++中位域的最大大小?

时间:2013-01-27 23:48:13

标签: c++ c struct bit-fields

  

可能重复:
  struct bitfield max size (C99, C++)

我可以在C或C ++的位字段中指定的位数有限制吗?例如,我可以这样做:

struct HugeInt {
    int myInt: 1000;
};

我问C和C ++,因为我知道语言规范有时会有所不同,并希望看看上面的例子是否可以保证在C或C ++中工作/不工作。

2 个答案:

答案 0 :(得分:14)

在C11,第6.7.2.1节,第4条:

  

指定位字段宽度的表达式应为整数常量表达式,其非负值不超过将指定的类型的对象宽度,而冒号和表达式省略。如果该值为零,则声明不应具有声明者。

简而言之,如果它没有位字段部分,它必须介于零和类型的大小之间。

答案 1 :(得分:0)

位字段'myInt'(1000位)的大小不能超过其类型的大小(int,通常为32位)