Nagie's DevStory

[C] 41. 분할 컴파일 이란? 본문

Programming/C

[C] 41. 분할 컴파일 이란?

Nagie 2023. 10. 7. 17:48
728x90

분할 컴파일이란 여러 변수와 함수를 기능별로 구분해 여러 개의 파일로 나누는 걸 의미한다.

*.c 파일에다 모든 내용을 정의하고 관리 한다면 유지보수 측면에서 좋지 않으며

따라서 기능들을 외부 파일로 분리해 필요에 따라 main()에서 호출해 사용하는 방법이

파일 분할 또는 분할 컴파일이다.

 

파일을 분할 할 때는 헤더파일과 소스 파일로 나뉘게 되는데

헤더파일엔 함수의 원형만 기재한다

즉 임시 선언만 해 컴파일러에 이런 함수가 있다는 정도만 알려주는 용도로 사용한다.

물론 소스 코드를 헤더에 넣어도 상관없이 컴파일되고 작동하긴 하지만 소스 코드를 재사용한다는 목적이 희석되며

파일 분할을 하는 의미가 없어지기 때문에 반드시 헤더 파일에는 함수의 원형만 정의하길 바란다.

소스 파일엔 헤더파일에서 임시 선언한 함수들을 정의한다.

다만 앞에 함수의 원형을 정의한 헤더 파일을 전처리 지시문을 사용해 소스 코드에 포함해 주지 않는다면

컴파일러는 해당 헤더파일의 유무를 알지 못해 에러가 발생한다.

즉 다음과 같이 사용하면 된다.

 

//MyFunction.h의 내용

#pragma once

int add(int a , int b);

 

//MyFunction.c의 내용

#include "MyFunction.h" //헤더 포함

int add(int a , int b) {

    return a + b;
}

 

//main.c의 내용
#include <stdio.h>
#include "MyFunction.h"

int main () {

    printf_s("%d\n",add(3,4));

}

 

그리고 시스템에서 제공하는 표준 헤더 파일은 < >(화살괄호)로 감싸며

사용자가 만든 헤더파일은 " "(큰따옴표)로 감싼다.

728x90
Comments