は、次のことを考えてみましょう:C++部分構造ビットフィールドサイズ
class A { public:
int gate_type : 4;
bool storage_elem : 1;
uint8_t privilege : 2;
bool present : 1;
} __attribute__((packed));
class B { public:
struct Sub {
int gate_type : 4;
bool storage_elem : 1;
uint8_t privilege : 2;
bool present : 1;
} type_attr; //Also tried with "__attribute__((packed))" here in addition to outside
} __attribute__((packed));
コンパイラがg ++ 4.8.1です。 sizeof(A)== 1、sizeof(B)== 4。なぜこれはそうですか?構造Bのようなサイズ1が必要です。
GCC 4.7.2:http://ideone.com/5UpazC(これは属性が内部構造体に直接適用されています)ではFWIWと表示されます。 –
http://coliru.stacked-crooked.com/view?id=93e976a41246e1de4cdae7418040122e-f674c1a6d04c632b71a62362c0ccfc51 –
@OliCharlesworthあなたのコードはOPとは異なります。 http://ideone.com/Z4wOkE – johnchen902