반응형
1. 왜 안됨?
typedef struct _list {
char data;
int a;
struct _list link;
} list;
위와 같이 선언한다면, 구조체의 크기가 무한대로 표현될 거시다.
자기참조 구조체는 다음과 같이 포인터를 이용해서 구현할 수 있다.
typedef struct _list {
char data;
int a;
struct _list *link;
} list;
2. typedef 구조체는 태그가 없어도 사용가능함
typedef struct {
char data;
int a;
struct _list link;
} list;
3. 왜 안됨?
typedef struct {
char data;
int a;
list* link;
} list;
list 별칭이 아직 선언되기 이전이라 인식할 수가 없어서 그럼
4. 왜 됨?
typedef struct {
char data;
int a;
struct list* link;
} list;
이거때문에 계속 띠용했는데, 어차피 포인터를 포함하는 필드이기 때문이라 그런거 같음.
실제로 다음과 같이 선언하지도 않은 구조체 BBBBBBB에 대한 포인터 형을 변수로 넣어도 정상적으로 컴파일됨.
typedef struct {
char data;
int a;
struct BBBBBBB* link;
} list;
뇌피셜인데, 컴파일러에서 실제 존재하는 구조체인지 확인은 하지 않고 그냥 포인터 형인지만 판단해서 공간을 할당해주는 거 같음.
반응형
'Information* > 알면도움됨' 카테고리의 다른 글
[Visual Studio 2017] CL Casting Error (0) | 2020.05.10 |
---|---|
vmware bridge (0) | 2020.05.06 |
c# 프로세스 소켓 오류 (0) | 2020.03.06 |
Frida unable to access Zygote64 error (0) | 2020.03.06 |
fatal error: 'openssl/sha.h' file not found (0) | 2020.01.18 |