есть небольшой код на VC++ 6.0
#pragma pack (push, 1)
enum E1
{
e11,
e12
};
enum E2
{
e21,
e22
};
struct S1
{
E1 e1:2;
E2 e2:2;
BYTE b1:1;
BYTE b3:3;
};
#pragma pack (pop)
вроде все просто, но почему структура S1 занимает 5 байт? Т.е. енумы выравниваются на 4 байта (e1 — первые 2 бита первого байьа, e2 — следующие 2 бита первого байта, b1 —
первый бит
5 байта, b2 — 3 следующих бита 5 байта)
это так и должно быть?
Здравствуйте, tavwizard, Вы писали:
T>есть небольшой код на VC++ 6.0
T>T>#pragma pack (push, 1)
T>enum E1
T>{
T> e11,
T> e12
T>};
T>enum E2
T>{
T> e21,
T> e22
T>};
T>struct S1
T>{
T> E1 e1:2;
T> E2 e2:2;
T> BYTE b1:1;
T> BYTE b3:3;
T>};
T>#pragma pack (pop)
T>
T>вроде все просто, но почему структура S1 занимает 5 байт? Т.е. енумы выравниваются на 4 байта (e1 — первые 2 бита первого байьа, e2 — следующие 2 бита первого байта, b1 — первый бит 5 байта, b2 — 3 следующих бита 5 байта)
T>это так и должно быть?
hint: sizeof(E1)==sizeof(E2)==4