잠깐만요
구조체 정의 순서에 유의하세요!
다음과 같이 구조체 Point 정의가 구조체 Circle 뒤에 있었다고 가정해 보겠습니다.
struct_6.c
#include <stdio.h> struct Circle { struct Point a; int radius; }; struct Point { int x, y; }; main() { struct Circle c1; c1.a.x = 10; c1.a.y = 20; c1.radius = 5; }
실행해 보면 다음과 같이 에러가 발생할 것입니다. Circle 구조체에서 a를 정의할 수 없다고 에러가 발생합니다.
C 언어는 절차적 언어라고 하였습니다. 절차적 언어는 코드 맨 위에서부터 순서대로 수행합니다. 그런데 Circle 구조체 정의부터 수행하면 Point에 대한 정의를 하지 않은 상태에서 Point 구조체 a를 선언하려고 하므로 문제가 발생합니다. 즉, 정의되어 있지 않는 것을 사용할 수 없으므로 에러가 발생하는 것입니다.