구조체 설정..

kgykingdom의 이미지

제가 6 byte 의 구조체를 아래와 같이 설정했는데..
sizeof() 를 하니 7 byte 가 출력되네요.. 문제는 union 선언 때문인데.. (union 이 2byte 로 잡히고 다들 4 bit 씩 밀려서.. )
공용 메모리로 사용하고 싶은데.. 방법이 없는지요.. 꼭 6 byte 로 맞춰야 합니다.
그리고 count 값에 따라서 다른 필드(a or b)를 넣고 싶은데.. union 말고 다른 방법이 있으면 가르침 부탁드립니다.

#pragma pack (push,1)
typedef struct header
{
    unsigned flag:1;
    unsigned count:1;
    unsigned id:6;
 
    union {
        unsigned a:12;  // if count == 0
        unsigned b:12;  // if count == 1
    } data;
 
    unsigned produce:4;
    unsigned consume:4;
    unsigned reserved:1;
    unsigned length:11;
} H, *pH;
#pragma pack (pop)