C/C++ ビットフィールドは、ハードウェア ドライバーやバイナリ ネットワーク転送に多くの用途があるようです。ただし、C99 標準 6.7.2.1/10 からのこの引用に見られるように、実際のバイナリ レイアウトは実装固有であるため、これらは広く使用されていないようであり、一般的に推奨されていません。
実装では、ビットフィールドを保持するのに十分な大きさのアドレス指定可能なストレージ ユニットを割り当てることができます。十分なスペースが残っている場合、構造内の別のビットフィールドの直後に続くビットフィールドは、同じユニットの隣接するビットにパックされます。十分なスペースが残っていない場合、収まらないビットフィールドを次のユニットに配置するか、隣接するユニットとオーバーラップするかは実装定義です。ユニット内のビットフィールドの割り当て順序 (上位から下位、または下位から上位) は実装定義です。アドレス可能なストレージ ユニットのアラインメントは指定されていません。
私の質問はかなり単純です。なぜ委員会は、ビットフィールドを実装固有のものとして残し、それによって主にメモリ使用量を削減するために使用できるコンパイラ構造にすることを決定したのですか?少しいじるコードからの開発者?