2013-02-21 4 views
0

이 유니온의 크기는 16 바이트입니다 (C++ 빌더 2007에서).C++ 빌더 2007, 유니온 및 비트 필드

typedef union 
{ 
    struct 
    { 
    unsigned Type:2; 
    unsigned Prev:31; 
    unsigned Next:31; 
    unsigned SizeInBytes:32; 
    }; 
} eMyUnion; 

sizeof (eMyUnion) = 12 바이트를 원한다면이 공용체 정의를 수정해야합니다.
(이 필드와 크기는 유지하고 재정렬 할 수 있음).
가능합니까?

+0

아마도 바이트 정렬을 설정해야합니다. #pragma pack 지시어와 비교되지만 C++ 빌더에서는 모르겠습니다. –

답변

1
#pragma pack(push, 1) 
    struct 
    { 
    unsigned Type:2; 
    unsigned Prev:31; 
    unsigned Next:31; 
    unsigned SizeInBytes:32; 
    }; 
#pragma pack(pop)