.h 파일과 .c 파일의 역할
C 프로젝트에서는 보통 헤더 파일 .h에 외부에 공개할 선언을 두고, 소스 파일 .c에 구현을 둔다. 선언과 구현을 나누면 여러 소스 파일이 같은 인터페이스를 공유할 수 있다.
| 파일 | 주요 내용 |
|---|---|
| .h | 함수 선언, 구조체와 열거형 정의, 매크로, extern 선언 |
| .c | 함수와 전역 변수의 실제 구현 |
컴파일 과정
#include는 컴파일 전에 전처리기가 헤더 내용을 현재 소스 파일에 포함하는 과정이다. 컴파일러가 헤더 이름을 보고 연결된 .c 파일을 자동으로 찾는 방식은 아니다.
각 .c 파일은 개별 오브젝트 파일로 컴파일되고, 마지막에 링커가 함수와 변수의 구현을 연결한다. 헤더에 선언만 있고 구현이 링크 대상에 없다면 링크 오류가 발생한다.
// motor.h
void Motor_Start(void);
// motor.c
#include "motor.h"
void Motor_Start(void) {
// implementation
}헤더 파일에는 include guard 또는 #pragma once를 넣어 같은 선언이 여러 번 포함되는 문제도 막아야 한다.
댓글을 불러오고 있습니다.