在以下 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 位)占用,随后的 4 个字节用于 a2。
这种行为是预期的吗?为什么我不能将 char[4] 与 short:13 一起打包?有没有办法实现它?