struct process {
struct Console *console;
}
typedef struct Console {
char buffer[MAX];
}
이 두가지 구조체가 정의되어있고
struct process *p1;
struct Console *c1;
두가지 전역변수 선언이 되어있을 때
p1->c1->buffer = 0; 이런 식으로 buffer를 불러내고 싶은데 자꾸 dereferncing pointer to incomplete type 'struct process' 문제가 발생함ㅠㅠㅠ
어떻게 바꿔서 처리해야하나요? ㅠㅠㅠ 살려줘여
구조체가 불완전형(incomplete type)이라는 건 선언만 되었지 정의되지 않았다는 뜻이고 당연히 *연산(dereferencing)이 안 되고요, 그리고 p1은 c1같은 멤버를 가지고 있지 않습니다
그리고 코드 깨진 거 같은데 다시 올려주세요.
p1 메모리 할당도 안 되어있고, p1에 있는건 console이지 c1이 아님. c1은 console이지만
아무튼... 이 코드의 문제점은 네가 선언과 정의에 대한 개념이 하나도 안 잡혀있다는거라서 이렇게 파편적으로 설명하면 아무것도 이해 안 될거다 비유해서 얘기하면 '사람' 이라는 개념 정의해놓고, '사람' 구조체에다가 '성격'이라는 구조체 만들어놓고 왜 착함이 access가 안 되지? 이러고 있는거야
특정인을 선언하고, 특정인의 '성격'을 선언해야 '성격'에 access 했을 때 '착함' 이라는 결과를 얻을 수 있는 거... 라고 말해봐야 기본적인 정의 / 선언 / 메모리 개념이 안 잡히면 설명 아무리해도 이해 못 함
그리고 struct Console *c1;이 struct process 정의보다 위에 있어야 하는 걸로 아는데요