Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Klassen und Strukturen können Member enthalten, die weniger Speicher als ein ganzzahliger Typ belegen.Diese Member werden als Bitfelder angegeben.Die Syntax für Bitfeld Member Deklarator Spezifikation folgt:
declarator : constant-expression
Hinweise
(Optional) declarator ist der Name, mit dem der Member im Programm zugegriffen wird.Es muss ein ganzzahliger Typ sein (einschließlich Enumerationstypen).Der konstante Ausdruck wird die Anzahl der Bits an, die der Member in der Struktur enthalten ist.Anonyme Bitfelder, also ohne Bitfeldmember — Bezeichner können für das Auffüllen verwendet werden.
Hinweis |
|---|
Ein unbenanntes Bitfeld der Breite 0 erzwingt die Ausrichtung des nächsten Bitfelds mit der nächsten type Limit, in der type der Membertyp ist. |
Das folgende Beispiel deklariert eine Struktur, die Bitfelder enthält:
// bit_fields1.cpp
// compile with: /LD
struct Date {
unsigned short nWeekDay : 3; // 0..7 (3 bits)
unsigned short nMonthDay : 6; // 0..31 (6 bits)
unsigned short nMonth : 5; // 0..12 (5 bits)
unsigned short nYear : 8; // 0..100 (8 bits)
};
Das konzeptionelle Arbeitsspeicher Lay-out eines Objekts vom Typ Date wird in der folgenden Abbildung dargestellt.
Arbeitsspeicher-Lay-out des Datums-Objekts
.png)
Beachten Sie, dass nYear ist 8 Bits lang und überschreiten würde die Wortgrenze des deklarierten Typs, short ohne Vorzeichen.Daher wird er am Anfang short ohne Vorzeichenneu gestartet.Es ist nicht notwendig, dass alle Bitfelder in ein Objekt des zugrunde liegenden Typs passen. neuer Geräte Speicher werden entsprechend der Anzahl von Bits zugeordnet, die in der Deklaration angefordert werden.
Microsoft-spezifisch
Die Reihenfolge der Daten, die als Bitfelder sind vom deklarierten. nach oben Bit, wie in der Abbildung oben.
Microsoft ENDES bestimmten
Wenn die Deklaration einer Struktur ein unbenanntes Feld mit der Länge 0, wie im folgenden Beispiel gezeigt, enthält
// bit_fields2.cpp
// compile with: /LD
struct Date {
unsigned nWeekDay : 3; // 0..7 (3 bits)
unsigned nMonthDay : 6; // 0..31 (6 bits)
unsigned : 0; // Force alignment to next boundary.
unsigned nMonth : 5; // 0..12 (5 bits)
unsigned nYear : 8; // 0..100 (8 bits)
};
Arbeitsspeicher das Lay-out ist wie in der folgenden Abbildung gezeigt.
Lay-out des Datums-Objekts mit der Länge 0 Bitfeld
.png)
Der zugrunde liegende Typ eines Bitfelds muss ein ganzzahliger Typ sein, wie in Grundlegende Typenbeschrieben.
Hinweis