Eine Frage zur Klassendefinition in C ++ ": 1" [duplizieren]

8

Ich habe ein Problem festgestellt, als ich den Code von Clang gelesen habe.

%Vor%

Dies ist das erste Mal, dass ich die Syntax ": 1" sah, wofür steht ": 1"? Danke!

    
Lei Mou 10.06.2011, 13:32
quelle

3 Antworten

7

Es ist ein Bitfeld , was bedeutet, dass der Wert nur ein Bit verwendet, anstatt 32 (oder was auch immer sizeof(unsigned) * <bits-per-byte> ist auf Ihrer Plattform).

Bitfelder sind nützlich für das Schreiben kompakter binärer Datenstrukturen, obwohl sie mit gewissen Leistungskosten verbunden sind, da der Compiler / die CPU nicht ein einzelnes Bit aktualisieren kann, sondern AND / OR-Operationen beim Lesen / Schreiben eines vollen Bytes ausführen muss.

    
Macke 10.06.2011, 13:34
quelle
2

Trigraphs und BCPLComment verwenden nur 1 Bit zum Speichern von Werten.

Zum Beispiel

%Vor%

verwendet nur 8 Bit Speicher. struct S kann ein einzelnes Byte oder einen Speicher verwenden. sizeof(S) ist 1 für den Fall einiger Implementierungen. Aber type und temp ist gleich 0,1,2 oder 3. Und num ist gleich 0,1,2, ..., nur 15.

    
Alexey Malistov 10.06.2011 13:34
quelle
2

Dies sind Bitfelder. Die "1" ist die Breite in Bits.

Siehe die C FAQ für eine Erklärung.

    
NPE 10.06.2011 13:34
quelle

Tags und Links