반응형
안녕하세요!
이번 시간에는 C 프로젝트를 효율적으로 구성하는 핵심 기술인 헤더파일과 모듈화에 대해 배워봅니다.
규모가 작을 땐 파일 하나로도 괜찮지만, 기능이 조금만 복잡해져도 코드가 뒤죽박죽 섞이기 쉽죠.
이럴 때 필요한 것이 바로 모듈화(Modularization)입니다.
여러 파일로 코드를 나누고, 각 기능을 역할별로 구조화하면 유지 보수도 쉬워지고 협업도 편해집니다.
1. 헤더파일은 왜 필요할까요?
C 언어는 기본적으로 함수나 변수의 선언(declaration)이 먼저 있어야 합니다.
그래서 우리가 직접 만든 함수들도, 다른 파일에서 쓰려면 미리 선언해줘야 해요.
그 선언을 따로 모아놓은 것이 바로 **헤더파일(header file)**입니다.
예시
// mathutil.h
int square(int x);
이 파일만 include 하면 다른 파일에서도 square()를 자유롭게 사용할 수 있어요!
2. 모듈화란?
모듈화는 프로그램을 여러 파일로 나눠 구성하는 것입니다.
보통은 다음처럼 나눕니다:
파일 역할
main.c | 프로그램 진입점 |
xxx.h | 선언 모음 (함수, 구조체 등) |
xxx.c | 실제 구현 |
✅ 장점은?
- 코드 재사용이 쉬움
- 협업 시 역할 분담이 명확함
- 디버깅과 유지 보수가 편해짐
3. 다중 파일 구조 실습 예제
이번엔 직접 코드를 여러 파일로 나눠서 만들어봅시다.
📁 main.c
#include <stdio.h>
#include "mathutil.h"
int main() {
int a = 3;
int b = 4;
printf("합: %d\n", add(a, b));
printf("곱: %d\n", multiply(a, b));
}
📁 mathutil.h
#ifndef MATHUTIL_H
#define MATHUTIL_H
int add(int x, int y);
int multiply(int x, int y);
#endif
📁 mathutil.c
#include "mathutil.h"
int add(int x, int y) {
return x + y;
}
int multiply(int x, int y) {
return x * y;
}
💡 #ifndef ~ #define ~ #endif는 중복 포함 방지용 전처리기예요. 필수로 쓰는 습관을 들이세요!
4. 컴파일 명령어 예시 (터미널 기준)
gcc main.c mathutil.c -o program
./program
여러 소스 파일을 함께 컴파일하면 하나의 실행 파일로 만들어집니다.
5. 오늘의 과제 🎯
과제 주제
📁 기능별로 소스파일과 헤더파일을 나눠서 프로그램 구성하기
과제 내용
- 간단한 계산기 기능 3가지를 각각 함수로 구현 (예: 더하기, 빼기, 제곱)
- 각 기능을 선언한 .h 파일과 구현한 .c 파일 분리
- main.c는 호출만 담당
마무리 정리
- 헤더파일은 선언, .c 파일은 구현
- 모듈화는 유지보수와 협업의 핵심
- 이번 과제는 앞으로의 프로젝트 기반 수업의 기초가 됩니다!
다음 시간에는 C 표준 라이브러리(math.h, string.h, stdlib.h 등)를 적극적으로 활용하는 법을 배워봅니다. 다양한 내장 함수들을 알고 나면 직접 구현해야 할 코드가 확 줄어요.
반응형
'C언어 > C언어 고급' 카테고리의 다른 글
고급8강_프로젝트 발표 & 코드 리뷰 (0) | 2025.04.22 |
---|---|
고급7강_실전 프로젝트 제작 (0) | 2025.04.22 |
고급6강_프로젝트 설계 및 역할 분담 (0) | 2025.04.22 |
고급5강_디버깅 기법 완전 정복 (0) | 2025.04.22 |
고급4강_C 라이브러리 활용법 완전 정복 (3) | 2025.04.22 |