문제 상황
C 언어에서 사용자가 직접 자신만의 헤더 파일을 만들 수 있을까요? 만약 가능하다면, 사용자 정의 헤더 파일에는 어떻게 접근해서 사용할 수 있을까요?
해결 방법
네, C 언어에서는 사용자가 직접 헤더 파일을 생성하는 것이 충분히 가능합니다.
사용자 정의 헤더 파일을 활용하면 함수, 전역 변수, 구조체 등을 하나의 별도 파일로 깔끔하게 관리할 수 있으며, 여러 모듈에서 손쉽게 재사용할 수 있다는 큰 장점이 있습니다.
그럼 실제 예제를 통해 사용자 정의 헤더 파일을 만들고 불러오는 과정을 살펴보겠습니다.
예제 코드
아래는 main.c 파일에서 외부에 정의된 swaping 함수를 호출하는 C 프로그램입니다.
#include<stdio.h>
#include"swaping.h" // 사용자 정의 헤더 파일 포함
void main(){
int a=40;
int b=60;
swaping (&a,&b);
printf ("a=%d\n", a);
printf ("b=%d\n",b);
}임시 변수(temp)를 이용해 두 숫자의 값을 서로 맞바꾸는 swapping 함수는 swapping.h 파일 안에 정의되어 있습니다.
이 코드는 main.c가 저장된 것과 동일한 폴더에 swapping.h라는 이름으로 저장해야 합니다.
void swapping (int* a, int* b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}주요 사항
헤더 파일의 확장자는 .h 입니다.
swapping.h와 main.c 두 파일은 반드시 같은 폴더(디렉터리)에 위치해야 합니다.
표준 라이브러리 헤더와 사용자 정의 헤더를 구분하기 위해, <swapping.h>가 아닌 #include "swapping.h" 형태로 작성합니다. 즉, 시스템 제공 헤더는 꺾쇠 괄호(<>)로, 직접 만든 헤더는 큰따옴표(")로 감싸는 것이 규칙입니다.
추가 팁
실무에서는 헤더 파일이 중복으로 포함되는 것을 방지하기 위해 다음과 같은 include guard(포함 보호자)를 사용하는 것이 좋습니다.
#ifndef SWAPING_H #define SWAPING_H void swapping(int* a, int* b); #endif
또한 헤더 파일에는 함수의 원형(선언)만 넣고, 실제 구현은 별도의 .c 파일에 작성한 뒤 함께 컴파일하는 방식이 더욱 안전하고 유지보수에 유리합니다.