Rozważmy następujący:C++ Podbudowa Bitfield Rozmiar
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));
kompilator g ++ 4.8.1. sizeof (A) == 1, sizeof (B) == 4. Dlaczego tak jest? Potrzebuję czegoś podobnego do struktury B, by mieć rozmiar 1.
FWIW, wygląda dobrze z GCC 4.7.2: http://ideone.com/5UpazC (jest to z atrybutem zastosowanym bezpośrednio do wewnętrznej struktury). –
http://coliru.stacked-crooked.com/view?id=93e976a41246e1de4cdae7418040122e-f674c1a6d04c632b71a62362c0ccfc51 –
@OliCharlesworth Twój kod różni się od OP. Zobacz http://ideone.com/Z4wOkE – johnchen902