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, ...들은 유니온으로 묶여( {,} ) 있으므로, 당연히 유관하지요.
그게 제 질문과 무슨 상관이죠?
그게 제 질문과 무슨 상관이죠?
댓글 달기