Header files in C language
C 언어의 헤더파일 다루기
헤더파일은 확장자가 .h로 되어 있고 여러 소스파일에서 공유되어야 할 함수의 선언이나 매크로가 포함되어 있다. 헤더파일을 포함하는 형식에 따라서 2가지 종류의 헤더파일로 구분할 수 있다.
- 컴파일러를 설치할 때 함께 설치된 표준 라이브러리 함수들의 선언부가 있는 표준 라이브러리 헤더파일
- 개발자가 작성한 함수를 다른 소스파일에서 공유하기 위해 해당 함수를 선언한 헤더파일
소스파일에 헤더파일을 포함하는 것은 해당 헤더파일의 내용을 현재 소스파일에 복사해서 붙여 넣는 것과 같지만 그렇게 하는 경우는 드물다.
헤더파일의 내용을 직접 소스파일에 입력하는 것은 오류를 발생하기 쉽고 헤더파일들을 전처리 명령어로 다루기가 더 어려워진다
헤더파일을 포함하는 2가지 방법
컴파일러를 설치할 때 함께 설치된 표준헤더 파일을 소스에 포함할 때는 다음과 같은 방법을 사용한다
#include <stdio.h>
위의 경우에 컴파일러는 시스템 헤더파일이 저장된 폴더에서 해당 헤더파일을 검색하여 소스에 포함한다
개발자가 생성한 헤더파일은 다음과 같은 방법을 사용하여 소스에 포함한다
#include "myheader.h"
위의 경우 컴파일러는 현재 소스파일이 있는 폴더에서 헤더파일을 검색하여 소스파일에 포함한다
위의 2가지 경우 헤더파일이 특정 폴더 안에 있다면 컴파일시에 -I 옵션을 사용하여 지정하면 된다
여러 소스파일에서 공유하는 헤더파일을 한번만 포함하는 표준적인 방법
소스파일이 많은 경우 여러 곳에 한개의 헤더파일을 공유하는 경우가 있는데 이 때 2번이상 헤더파일을 포함하면 오류가 발생한다 그러므로 한번 포함된 헤더파일이 다시 포함되는 것을 막기 위해 아래와 같은 방법을 사용한다
#ifndef MAIN_HEADER
#define MAIN_HEADER
#include "mainheader.h"
#endif
프로그램이 실행되는 시스템의 OS에 따라서 다른 헤더파일이 사용되어야 하는 경우에는 다음과 같은 방법을 사용할 수 있다
#if WINDWOS
#include "windows.h"
#elif LINUX
#include "linux.h"
#elif MAC
#include "mac.h"
#endif