union안에 struct??

vani2의 이미지

처음보는 문법이였은데요

이름없는 union안에 이름없는 구조체를 넣었네요..

이게 무엇인가요?

struct Obj{ 
  union   {   
   int64 a;   
   struct {   
     int32 b;    
     char c1, c2,c4,c4; 
     }; 
  };
};

익명 사용자의 이미지

struct가 무엇인지 union이 무엇인지 알면 그냥 해석되는 문장입니다.
뭐 특별한 게 있을 거라고 생각하지 말고 이미 알고 계신대로 해석해보세요.

vani2의 이미지

그럼 이건요?

struct Obj{   
union   {      
   struct {    
    int32 b;       
  char c1, c2,c4,c4;      
}; 
 };
};

익명 사용자의 이미지

마찬가지입니다. 특별할 것 없습니다.
혹시 표준 c99/c++98을 생각하고 계신거라면 anonymous struct/union inside struct/union은 허용되지 않습니다.
그 관점에서는 이상해보일 수도 있겠네요.
하지만 gcc extension으로 오랫동안 사용가능했고, c++11에서 표준에 추가되었습니다.

vani2의 이미지

제가 보기엔

union안에 struct를 넣어서 union은 넣으나 마나인것 같은데.. 틀린 발상인가요?

익명 사용자의 이미지

네 넣으나 마나입니다.
처음에 드신 예라면 몰라도 두번째 예는 굳이 저렇게 할 이유가 없지요.
어쨌거나 문법상 이상한 점은 없습니다.

예를 들어
x = y + 1 - 1
이라는 문장이 있다면 그 의도가 무엇인지 이상하기는 하지만,
문법상 문제가 있거나 무슨 일을 하는 코드인지 이해할 수 없는 것은 아니지요.
하는 일이 무엇인지는 분명합니다.

klara의 이미지

공용체에 변수하나만있다고 문제삼으실건가요? 마찬가집니다.

klara의 이미지

C++11이랑 C11이랑 혼동하고 계신 듯 합니다.

익명 사용자의 이미지

맞습니다. c++11이 아니라 c11입니다.

vani2의 이미지

그렇군요.

답변 감사합니다.