Linuxでcの構造体を扱っています。ビット フィールドと「packed」属性を使い始めたところ、奇妙な動作に遭遇しました。
struct __attribute__((packed)) {
int a:12;
int b:32;
int c:4;
} t1;
struct __attribute__((packed)) {
int a:12;
int b;
int c:4;
}t2;
void main()
{
printf("%d\n",sizeof(t1)); //output - 6
printf("%d\n",sizeof(t2)); //output - 7
}
まったく同じである両方の構造が異なるバイト数を取るのはなぜですか?