Ist es zulässig, Bitfelder mit Union zu verwenden?

9

Ich habe ein Bitfeld mit einer solchen Struktur verwendet,

%Vor%

Nun habe ich mich gefragt, ob das mit einer Union gemacht werden kann, also ändere ich den Code wie,

%Vor%

Ich habe das Bitfeld mit der Vereinigungsfunktion gefunden, aber alle diese Felder in der Vereinigung werden einem einzelnen Bit zugewiesen, wie ich es von der Ausgabe verstehe. Jetzt sehe ich, dass es nicht falsch ist, Bitfelder mit union zu verwenden, aber es scheint mir, dass es so nicht korrekt funktioniert. Also, was ist die Antwort - ist es gültig, Bit-Feld mit Union zu verwenden?

    
amin__ 04.07.2012, 09:41
quelle

2 Antworten

12

Sie bekommen eine Pistole und Kugeln. Ist es in Ordnung, sich selbst damit zu schießen? Natürlich nicht, aber niemand kann dich daran hindern, das zu tun, wenn du willst.

Mein Punkt ist, genau wie Waffen und Kugeln, Gewerkschafts- und Bitfelder sind Werkzeuge und sie haben ihren Zweck, ihre Verwendung und ihren "Missbrauch". Die Verwendung von Bitfields in union, wie Sie oben beschrieben haben, ist also perfekt C, aber ein nutzloser Code. Alle Felder innerhalb der Union teilen den gleichen Speicher, so dass alle von Ihnen genannten Bitfelder im Wesentlichen das gleiche Flag sind, da sie denselben Speicher teilen.

    
binW 04.07.2012, 09:54
quelle
13

Es ist gültig, aber wie Sie herausgefunden haben, nicht nützlich, wie Sie es dort getan haben.

Sie könnten so etwas tun, damit Sie alle Bits gleichzeitig mit Flags zurücksetzen können.

%Vor%

Oder Sie könnten etwas wie folgt machen:

%Vor%     
SpacedMonkey 04.07.2012 09:55
quelle

Tags und Links