typedef struct {
int a;
} Node1;
typedef struct {
int a;
Node2* node;
} Node2;
int a;
} Node1;
typedef struct {
int a;
Node2* node;
} Node2;
Node1은 C++에서도 에러 안나고 Node2는 에러남
Node1은 무명 구조체 타입이 타입 별칭 정해주기 전에 완성된 타입이 되어서 문제 없는 것 같고
Node2는 무명 구조체 타입이 완성되기도 전에 (후에) 붙을 타입 별칭을 내부적으로 써서 문제된 것 같음
밑에 글 글쓴이인데 정확히 맞는거같아요. 저도 그렇게 이해했어요
typedef 말고 그냥 struct A{A* next; int a};는 c++에선 됨 VC++에서만 되는걸지도 ㅇㅇ
그거야 C++ 룰상 Struct A라고 써서 A라는 태그를 붙인 순간 이미 타입이름도 되기 때문에 당연히 될 듯
결국 그것도 위에 문제를 해결한 태그를 사용한 자기참조포인터랑 같네요