C전처리와 빌드

헤더 파일과 include guard

선언을 헤더로 분리하고 중복 포함을 막는 include guard의 기본 역할을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

c
#ifndef MATH_UTILS_H
#define MATH_UTILS_H

int add(int a, int b);

#endif

설명

  • 헤더 파일은 함수 선언, 타입 선언, 매크로처럼 여러 소스 파일이 함께 알아야 하는 인터페이스를 모아 둡니다.
  • include guard는 같은 헤더가 여러 번 포함되더라도 한 번만 처리되게 만드는 전형적인 패턴입니다.
  • 선언은 헤더에, 실제 함수 정의는 .c 파일에 두는 것이 분할 컴파일의 기본 구조입니다.
  • 헤더를 잘 나누면 의존 관계가 명확해지고, 프로젝트 규모가 커져도 수정 범위를 추적하기 쉬워집니다.

짧은 예제

c
/* math_utils.h */
#ifndef MATH_UTILS_H
#define MATH_UTILS_H

int add(int a, int b);

#endif

빠른 정리

항목설명
헤더 파일여러 소스 파일이 공유하는 선언을 모아 둠
함수 선언반환 타입, 이름, 매개변수 목록을 미리 알림
include guard중복 포함으로 인한 재정의를 방지
인터페이스 분리선언과 구현을 나눠 관리 가능
헤더 의존성필요한 선언만 포함하는 습관이 중요

주의할 점

헤더에 함수 정의나 전역 변수 정의를 무분별하게 넣으면 여러 소스 파일에서 중복 심볼 문제가 생길 수 있습니다. 보통 헤더에는 선언 위주로 두는 편이 안전합니다.