Wie erzwinge ich die Struct-Bit-Reihenfolge mit dem GCC-Compiler?

8

Ich habe mich gefragt, ob es eine GCC C Compiler-Direktive gibt, die es mir erlaubt, die Bit-Reihenfolge für das Packen einer Struktur zu bestimmen? Etwas wie:

%Vor%

Das Grundprinzip für solch ein Bedürfnis ist, dass ich die folgende Struktur habe:

%Vor%

Mit dieser Struktur möchte ich, dass der Compiler es so packt:

%Vor%

Statt wie es GCC tut:

%Vor%

Ich habe es mit MCUs zu tun, die riesige Header-Dateien haben, die Strukturen haben, die Bit-Offsets nach vorgegebenen Hardware-Adressen berechnen. Ich hoffe, dass es eine Compiler-Direktive in GCC C Compiler gibt, die den Bit-Reihenfolge-Swap für mich durchführt, bevor ich versuche, alle Felder in der vom Hersteller bereitgestellten Datei umzudrehen.

    
Vern 18.07.2011, 02:41
quelle

1 Antwort

12

Welche Version von GCC verwenden Sie und welche Plattform? Ein Pragma existiert, das mag den Trick, aber es funktioniert nicht auf x86 beginnend mit GCC 4.

%Vor%

Weitere Details unter:

Ссылка

Wenn es dir nichts ausmacht, GCC neu zu erstellen, sind alle relevanten Build-Einstellungen hier (suche nach bitfield ):

Ссылка

Einige Details über Bitfelder, die schlecht sind:

C / C ++: Bitfeldreihenfolge und Ausrichtung erzwingen

    
kichik 18.07.2011, 03:05
quelle