78.6 연습 문제: extern으로 다른 소스 파일의 전역 변수 사용하기

다음 소스 코드를 완성하여 1.0 2.0 3.0이 출력되게 만드세요.

point3d.h

#ifndef POINT3D_H
#define POINT3D_H

struct Point3D {
    float x, y, z;
};

#endif

print.c

#include <stdio.h>
#include "point3d.h"

struct Point3D p1 = { 1.0f, 2.0f, 3.0f };

main.c

#include <stdio.h>
#include "point3d.h"
                        
______________________________

int main()
{
    printf("%.1f %.1f %.1f\n", p1.x, p1.y, p1.z);

    return 0;
}

실행 결과

1.0 2.0 3.0

정답

extern struct Point3D p1;

해설

구조체 Point3D로 선언한 전역 변수 p1은 소스 파일 print.c에 있습니다. p1main.c에서도 사용하려면 extern struct Point3D p1;과 같이 p1이 외부에 있다는 것을 표시해주면 됩니다.