pragma pack
-
Hallo zusammen
Bisher war ich mir sicher, wie ich Elemente in Strukturen alignen kann und steh nun vor folgendem Problem
#pragma pack(push, 2)
typedef struct TSTRUCT1 {
uint8_t ubElem1;
uint8_t ubElem2;
uint8_t ubElem3;
} TSTRUCT1;
#pragma pack(pop)Ich hätte mir nun erwartet, dass sizeof(TSTRUCT1) die Größe 6 liefert. Tatsächlich kommt aber 3 zurück.
Sobald ich in die Struktur ein Element hinzufüge, welches Größer 1 Byte ist, arbeitet das Ganze so wie ich es mir erwarten würde.
Getestet mit IAR 7.20, VS2008, …
Kann mir bitte jemand erklären, wieso hier kein Padding stattfindet?
Vielen Dank!!
-
MSDN schrieb:
Die Ausrichtung eines Members erfolgt an einer Begrenzung, die entweder ein Vielfaches von n oder ein Vielfaches der Größe des Members ist, je nachdem, was kleiner ist.
n ist bei dir die 2
Die Einstellungen mit
#pragma
sind vom Compiler abhängig und haben mit Standard C eigentlich wenig zu tun.