union 안에서 struct 정의... 값이 제대로 안들어 갑니다.
글쓴이: rndrmagkqslek. / 작성시간: 화, 2006/02/07 - 3:40오후
다음과 같은 코드에서
typedef unsigned int DWORD;
#define PACK __attribute__ ((packed))
typedef struct _ST
{
DWORD a : 8;
union
{
struct
{
DWORD b : 4;
} PACK;
struct
{
DWORD _b1 : 3;
DWORD _b2 : 1;
} PACK;
};
DWORD c : 1;
union
{
struct
{
DWORD d : 3;
} PACK;
struct
{
DWORD _d1 : 1;
DWORD _d2 : 1;
DWORD _d3 : 1;
} PACK;
};
DWORD mask : 1;
union
{
DWORD PACK e : 1;
DWORD PACK _e : 1;
};
DWORD f : 14;
} PACK ST;
#include <stdio.h>
int main(void)
{
ST st;
*(unsigned int*)&st = 0;
st.mask = 1;
printf("st = %d\n", *(unsigned int*)&st);
return 0;
}
mask에 값을 대입해 보아도 값이 0이 나오네요.
gcc 컴파일러 사용하고 있습니다.
Forums:


union을 다시 공부해보세요.이를 테면,union OOO {
union을 다시 공부해보세요.
이를 테면,
union OOO {
X;
XX;
XXX;
XXXXX;
};
int p;
위에서 int p와 유니온과는 전혀 무관합니다.
단지, X, XX, ...들은 유니온으로 묶여( {,} ) 있으므로, 당연히 유관하지요.
그게 제 질문과 무슨 상관이죠?
그게 제 질문과 무슨 상관이죠?
댓글 달기