12

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

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

struct HugeInt {
    int myInt: 1000;
};

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

4

2 回答 2

16

在 C11 第 6.7.2.1 节第 4 节中:

指定位域宽度的表达式应是一个整数常量表达式,其非负值不超过在省略冒号和表达式时将指定的类型的对象的宽度。如果值为零,则声明不应有声明符。

所以简而言之,如果它没有位域部分,它必须在零和类型的大小之间。

于 2013-01-27T23:52:44.940 回答
0

位域“myInt”的大小(1000 位)不能超过其类型的大小(int,通常为 32 位)

于 2013-01-27T23:52:36.257 回答