重複の可能性:
struct ビットフィールドの最大サイズ (C99、C++)
C または C++ のビット フィールドに指定できるビット数に制限はありますか? たとえば、私はこれを行うことができます:
struct HugeInt {
int myInt: 1000;
};
言語仕様が異なる場合があることを知っており、上記の例が C または C++ で動作する/動作しないことが保証されているかどうかを確認したかったので、C と C++ の両方について質問しています。
重複の可能性:
struct ビットフィールドの最大サイズ (C99、C++)
C または C++ のビット フィールドに指定できるビット数に制限はありますか? たとえば、私はこれを行うことができます:
struct HugeInt {
int myInt: 1000;
};
言語仕様が異なる場合があることを知っており、上記の例が C または C++ で動作する/動作しないことが保証されているかどうかを確認したかったので、C と C++ の両方について質問しています。
C11、セクション 6.7.2.1、節 4:
ビットフィールドの幅を指定する式は、コロンと式が省略された場合に指定される型のオブジェクトの幅を超えない非負の値を持つ整数定数式でなければなりません。値がゼロの場合、宣言には宣言子がありません。
つまり、ビットフィールド部分がない場合は、ゼロと型のサイズの間でなければなりません。
ビットフィールド 'myInt' (1000 ビット) のサイズは、その型のサイズ (int、通常は 32 ビット) を超えることはできません