Es ist ein bitfield Mitglied. Ihr Code bedeutet dumpable
belegt genau 1 Bit in der Struktur.
Bitfelder werden verwendet, wenn Sie Mitglieder in Bit-Ebene packen möchten. Dies kann die Speichergröße stark reduzieren, wenn in der Struktur viele Flags vorhanden sind. Zum Beispiel, wenn wir eine Struktur mit 4 Mitgliedern mit bekannten numerischen Einschränkungs
0 < a < 20
b in [0, 1]
0 < c < 8
0 < d < 100
dann die struct könnte erklärt werden, wie
struct Foo {
unsigned a : 5; // 20 < 2^5 = 32
unsigned b : 1; //
unsigned c : 3; //
unsigned d : 7; // 100 < 2^7 = 128
};
dann die Bits von Foo kann wie
angeordnet sein definieren
statt
struct Foo {
unsigned a;
unsigned b;
unsigned c;
unsigned d;
};
, in dem viele Bits aufgrund der Wertebereich
# wasted space which is not used by the program
# v v
ddddddd ccc
------------------------------------ ------------------------------------
uint32 uint32
b aaaaa
------------------------------------ ------------------------------------
uint32 uint32
so können Sie Platz von zusammen viele Mitglieder Verpackung sparen verschwendet.
Beachten Sie, dass der C-Standard nicht angibt, wie die Bitfelder in einer "adressierbaren Speichereinheit" angeordnet oder gepackt sind. Außerdem sind Bitfelder im Vergleich zum direkten Mitgliederzugriff langsamer.
Trinär ist Basis drei. Du meintest Ternär, und obwohl es der einzige ternäre Operator ist, wie John sagt, dass das nicht sein Name ist. –
Danke, ich schätze diese Korrekturen. Ich habe diese Zeile aus meiner Frage entfernt, da sie nicht relevant war. – Tzafrir
Ich glaube, dass das Doppelpunkt-Tag auf dieser Frage bleiben sollte, da andere, wie ich, dieses Wort verwenden könnten, um herauszufinden, was das bedeutet, bevor sie fragen. – Tzafrir