次の 2 つの構造では、
typedef struct _a {
short a1:13 __attribute__((packed));
char a2[4] __attribute__((packed));
} a;
typedef struct _b {
short b1:10 __attribute__((packed));
short b2:10 __attribute__((packed));
short b3:12 __attribute__((packed));
} b;
ではstruct b
、b2 のビットが b1 でパックされ、b3 のビットが b2 でパックされていることがわかります。最終的には 4 バイト値になります。
と同様の動作を期待していましたstruct a
が、同じではありません。最初の 2 バイトは a1 (未使用の 5 ビット) で占められ、その後に a2 の 4 バイトが続きます。
この動作は予期されたものですか? char[4] を short:13 と一緒にパックできないのはなぜですか? それを達成する方法はありますか?