Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 사용자 정의 헤더 파일 만들고 활용하는 방법

문제 상황

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 파일에 작성한 뒤 함께 컴파일하는 방식이 더욱 안전하고 유지보수에 유리합니다.