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

고급2강_전처리기 지시문 완전 정복

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

안녕하세요!
이번 시간에는 C 언어에서 정말 많이 사용되지만, 헷갈릴 수 있는 요소인 **전처리기 지시문(preprocessor directives)**에 대해 알아보겠습니다.

C 언어를 좀 써보신 분들이라면 #include, #define, #ifdef 같은 걸 보신 적 있을 거예요.
하지만 정확히 언제 쓰고, 어떻게 쓰는지가 헷갈릴 수 있죠. 오늘은 이 전처리기의 핵심들을 확실히 정리해봅시다.


1. 전처리기란 무엇인가요?

전처리기는 C 컴파일러가 코드를 컴파일하기 전에 미리 처리하는 단계입니다.
즉, 전처리기 지시문은 컴파일러에게 “이 코드를 이렇게 바꿔서 넘겨줘~” 라고 말하는 명령어입니다.

전처리기 지시문의 종류

지시문 설명

#include 다른 파일 불러오기
#define 매크로 정의 (상수/함수처럼 사용 가능)
#undef 정의 취소
#ifdef, #ifndef, #endif 조건부 컴파일
#if, #else, #elif 조건 판단

2. #include – 외부 파일을 가져오자

우리가 항상 쓰는 #include <stdio.h> 같은 문장 있죠?
이건 말 그대로 다른 파일에 있는 코드(함수, 구조체 등)를 가져오는 기능이에요.

  • <...>는 시스템 헤더파일
  • "..."는 사용자 정의 헤더파일

예를 들어 다음처럼 쓸 수 있습니다:

#include "myutils.h"

3. #define – 상수와 매크로를 만들자

#define PI 3.14
#define SQUARE(x) ((x)*(x))
  • PI는 간단한 상수 정의
  • SQUARE(x)는 함수처럼 보이지만 사실은 단순한 문자열 치환이에요.

❗ 괄호 사용에 주의! 안 쓰면 의도치 않은 결과가 나올 수 있어요.


4. 조건부 컴파일 – 상황 따라 다르게 컴파일하기

#define DEBUG

#ifdef DEBUG
  printf("디버깅 정보 출력\n");
#endif

이 구조는 개발 중일 때만 디버깅 코드를 실행하고, 나중에 릴리즈할 때는 빼버리는 데 유용해요.


5. 실습 예제 – 헤더 파일 나눠보기

이번엔 간단한 예제를 가지고, 코드를 헤더 파일과 소스 파일로 분리해보는 실습을 해볼게요.

📁 main.c

#include <stdio.h>
#include "mathutil.h"

int main() {
    int num = 5;
    printf("제곱 결과: %d\n", square(num));
}

📁 mathutil.h

#ifndef MATHUTIL_H
#define MATHUTIL_H

int square(int x);

#endif

📁 mathutil.c

#include "mathutil.h"

int square(int x) {
    return x * x;
}

💡 헤더파일에 #ifndef ~ #define ~ #endif를 써주는 건 중복 포함 방지용이에요!


6. 오늘의 과제 🎯

과제 주제

📂 여러 파일로 구성된 프로젝트에서 헤더 파일을 나눠 관리해보세요!

과제 내용

  • 두 개 이상의 기능을 헤더파일로 분리
  • #define과 #ifdef를 활용하여 조건부 실행 코드 작성
  • main.c는 정리된 형태로 구성

마무리 정리

  • 전처리기는 컴파일 전에 미리 처리되는 부분
  • #define, #include, 조건부 컴파일은 실무에서 정말 자주 씀
  • 앞으로의 모듈화와 디버깅에도 꼭 필요하니 확실히 익혀둡시다!
반응형