본문 바로가기
C언어/C언어 고급

고급3강_헤더파일과 모듈화 완전 정복

by AI쌤 2025. 4. 22.
반응형

안녕하세요!
이번 시간에는 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 등)를 적극적으로 활용하는 법을 배워봅니다. 다양한 내장 함수들을 알고 나면 직접 구현해야 할 코드가 확 줄어요.

반응형