C11 によると、オブジェクトは次のとおりです。
#C11 § 3: 用語、定義、および記号
オブジェクト: 実行環境におけるデータ ストレージの領域。その内容は値を表すことができます。
ビットフィールドは値を表すことができるため、オブジェクトである必要があります。しかし、そうではないと言われました。
正解は?
C11 によると、オブジェクトは次のとおりです。
#C11 § 3: 用語、定義、および記号
オブジェクト: 実行環境におけるデータ ストレージの領域。その内容は値を表すことができます。
ビットフィールドは値を表すことができるため、オブジェクトである必要があります。しかし、そうではないと言われました。
正解は?
6.2.6.1p2は、「ビットフィールドを除いて、オブジェクトは1バイト以上の連続したシーケンスで構成されています[...]」と述べているため、ビットフィールドがオブジェクトであることは明らかです。同様に、6.2.6.1p4は「非ビットフィールドオブジェクト」を指します。
3.5p1は、ビットをデータストレージの単位として定義します。ビットフィールドはビットの領域であるため、データストレージの領域である必要があります。標準では、オブジェクトとメモリ位置を区別します(メモリ位置は、「スカラー型のオブジェクト、またはすべてゼロ以外の幅を持つ隣接するビットフィールドの最大シーケンス」; 3.14p1)ので、オブジェクトは明確なメモリ位置を持つ必要はありません。