C언어 파일분활과 헤더파일 헤더파일 디자인

    2018-02-11 01:07:36 작성

    헤더파일은 외부에 선언된 변수및 함수를 호출하기 위한 선언들입니다.
    헤더파일에서는 extern 키워드는 생략합니다.
    일반적으로 헤더파일과 소스코드는 짝을 이루며 관련있는 항목끼리 파일이름을 같이 합니다.
    헤더파일에는 매크로상수, 전역변수, 함수의 원형이 선언되며 소스코드에는 실제 함수의정의를 작성합니다.
    다음의 예제는 총 7개의 파일로 구성이 됩니다.


    calculate.h
    #define PI 3.141592
    double add(double num1, double num2); // 덧셈
    double min(double num1, double num2); // 뺄셈
    double mul(double num1, double num2); // 곱셈
    double div(double num1, double num2); // 나눗셈

    calculate.c
    double add(double num1, double num2) {
    	return num1 + num2;
    }
    double min(double num1, double num2) {
    	return num1 - num2;
    }
    double mul(double num1, double num2) {
    	return num1 * num2;
    }
    double div(double num1, double num2) {
    	return num1 / num2;
    }

    먼저 위의 두 파일을 쌍으로 calculate.c는 기본사칙연산을 해주는 함수들을 정의하였고 calculate.h 는 이 함수들의 선언부 입니다.
    calculate.c에 정의된 함수를 사용하려면 calculate.h를 포함하면 됩니다.
    그리고 매크로 정의도 파일 단위로만 유효 하기 때문에 PI를 쓰려면 calculate.h파일을 포함해야 합니다.


    round.h
    double rectangleRound(double base, double height); // 원의 둘레
    double squareRound(double side); // 사각형 둘레

    round.c
    #include "calculate.h"
    double rectangleRound(double base, double height) {
    	return mul(add(base, height), 2);
    }
    double squareRound(double side) {
    	return mul(side, 4);
    }

    round.h에 사각형 둘레와 원의 둘레를 구하는 함수를 선언하였고 round.c 파일에 각 함수를 정의하였습니다.
    round.c에서 함수 구현에 필요한 함수가 calculate.c 파일에 정의 되어있으므로 선언 파일인 calculate.h 파일을 포함합니다.


    area.h
    double triangleArea(double base, double height); // 삼각형의 넓이
    double circleArea(double radius); // 원의 넓이

    area.c
    #include "calculate.h"
    double triangleArea(double base, double height) {
    	return div(mul(base, height), 2);
    }
    double circleArea(double radius) {
    	return mul(mul(radius, radius), PI);
    }

    area.h에 삼각형의 넓이, 원의 넓이를 구하는 함수를 선언하였고 area.c 파일에 각 함수를 정의하였습니다.
    area.c에서 함수 구현에 필요한 함수가 calculate.c 파일에 정의 되어있으므로 선언 파일인 calculate.h 파일을 포함합니다.


    main.c
    #include <stdio.h>
    #include "area.h"
    #include "round.h"
    
    int main(void) {
    	printf("삼각형의 넓이 (밑변 4.5, 높이 3.2) : %g\n",triangleArea(4.5, 3.2));
    	printf("원의 넓이 (반지름 5.4) : %g\n",  circleArea(5.4));
    	printf("직사각형의 둘레 (가로 2.4 세로 1.5) : %g\n", rectangleRound(2.4, 1.5));
    	printf("정사각형의 둘레 (변의 길이 4.5) : %g\n", squareRound(4.5));
    	return 0;
    }

    마지막으로 main.c 파일에서 main함수를 만들어 area.h와 round.h 파일을 포함하고 이들을 활용하여 프로그램을 작성합니다.

    솔루션 탐색기에 다음과 같이 파일이 생성되어야 합니다.

    이렇게 헤더파일과 소스코드를 분리 함으로 각각의 파일에 대한 관리가 용이해집니다.