Bitfelder, warum implementierungsspezifisch?

C / C ++ - Bitfelder scheinen in Hardwaretreibern und binären Netzwerkübertragungen eine große Bedeutung zu haben. Sie scheinen jedoch nicht weit verbreitet zu sein und werden im Allgemeinen nicht empfohlen, da das tatsächliche binäre Layout implementierungsspezifisch ist, wie in diesem Zitat aus dem C99-Standard 6.7.2.1/10 - "Struktur- und Vereinigungsspezifizierer" zu sehen ist.

Eine Implementierung kann eine beliebige adressierbare Speichereinheit zuweisen, die groß genug ist, um ein Bitfeld zu halten. Wenn noch genügend Platz vorhanden ist, wird ein Bitfeld, das unmittelbar auf ein anderes Bitfeld in einer Struktur folgt, in benachbarte Bits derselben Einheit gepackt. Wenn nicht genügend Platz vorhanden ist, wird durch die Implementierung festgelegt, ob ein Bitfeld, das nicht passt, in die nächste Einheit eingefügt wird oder benachbarte Einheiten überlappt. Die Reihenfolge der Zuweisung von Bitfeldern innerhalb einer Einheit (hoch zu niedrig oder niedrig zu hoch) ist implementierungsdefiniert. Die Ausrichtung der adressierbaren Speichereinheit ist nicht spezifiziert.

Meine Frage ist ziemlich einfach; Warum hat sich das Komitee entschieden, Bitfelder als etwas Implementierungsspezifisches zu belassen und es dadurch zu einem Compilerkonstrukt zu machen, das hauptsächlich zur Reduzierung des Speicherverbrauchs verwendet werden kann, wo es in vielen Fällen hätte verwendet werden können, um nette binäre Layouts bereitzustellen und frei zu sein Entwickler von Bit-Fiddling-Code?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage