Hallo zusammen!
Ich brauche eine Bestätigung zu folgendem Konstrukt:
Da C ja keine "Array of bits" kennt, bspw.
V:
1 | struct { onebit:1[16];} arrayofbits;
|
Bin ich auf folgende Idee gekommen, um das zu umgehen(auf den ersten
Blick):
1 | typedef struct { unsigned thebit:1;} onebit; //I:
|
2 | struct { onebit bit[16]; } arraysofbits; //II:
|
was geschieht hier:
I: ein Bit wird in einem Byte angelegt
Der eigentliche Knackpunkt, was macht der Compiler(gcc)?
II: a) 16mal ein Byte anlegen -> struct 16Byte lang
b) er erkennt, dass es sich um ein Bitfield handelt
-> struct 2Bytes lang(16bit)
Die vernünftige und wahrscheinliche Variante ist wohl IIa).
Lieber wäre mir IIb) - und nein - Variante IIa) löst nicht mein
eigentliches Problem und ist hässlich, da mehr Speicher unnütz verbraten
wird.
Ansonsten muss ich eben die 16bit per Hand maskieren, dachte nur man
könnte so diese Drecksarbeit dem Compiler überlassen.
Oder aber in V: onebit_n:1; mit n= 0-15 durchnummerieren [...].
Für Meinungen/Bestätigungen/Ideen
schon mal: Danke im Vorraus!
SyntaxError