더북(TheBook)

icon_wait

구조체 정의 순서에 유의하세요!

다음과 같이 구조체 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를 선언하려고 하므로 문제가 발생합니다. 즉, 정의되어 있지 않는 것을 사용할 수 없으므로 에러가 발생하는 것입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.