기본 패턴
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 | 중복 포함으로 인한 재정의를 방지 |
| 인터페이스 분리 | 선언과 구현을 나눠 관리 가능 |
| 헤더 의존성 | 필요한 선언만 포함하는 습관이 중요 |
주의할 점
헤더에 함수 정의나 전역 변수 정의를 무분별하게 넣으면 여러 소스 파일에서 중복 심볼 문제가 생길 수 있습니다. 보통 헤더에는 선언 위주로 두는 편이 안전합니다.