Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 전처리기(Preprocessor)란? 주요 지시문 10가지 총정리

C 전처리기란 무엇인가?

C 프로그래밍 언어는 프로그램을 더욱 효율적으로 작성하고 관리할 수 있도록 전처리기(Preprocessor)를 지원합니다. C 전처리기는 C 기반 프로그래밍 언어를 위한 매크로 전처리기로, 실제 컴파일이 시작되기 전에 소스 코드를 사전에 처리하는 역할을 담당합니다.

전처리기를 활용하면 컴파일러에 다음과 같은 기능을 명시적으로 지시할 수 있습니다.

  • 헤더 파일 포함: 외부 파일의 선언을 소스에 가져오기
  • 매크로 확장: 상수나 함수 형태의 매크로 치환
  • 조건부 컴파일: 특정 조건에 따라 코드 선택적 컴파일
  • 라인 제어: 컴파일러의 줄 번호 및 파일 정보 제어

전처리기의 기본 문법

전처리기는 #(해시) 기호로 정의됩니다. 즉, 모든 전처리기 지시문은 반드시 #로 시작하며, 그 뒤에 공백 없이 전처리기 이름이 이어집니다.

#include <stdio.h>
#define PI 3.14159

위 예시처럼 전처리기 지시문은 일반 문장과 달리 세미콜론(;)을 붙이지 않는다는 점도 기억해 두면 좋습니다.

주요 C 전처리기 지시문 목록

아래 표는 C에서 자주 사용되는 전처리기 지시문 10가지를 정리한 것입니다.

번호전처리기설명
1.#include지정한 헤더 파일을 소스 코드에 포함시킵니다.
2.#define전처리기 매크로(상수 또는 함수형 매크로)를 정의합니다.
3.#undef이미 정의된 전처리기 매크로의 정의를 해제합니다.
4.#if컴파일 시점의 조건을 검사하여 참(True)인 경우 해당 코드를 컴파일합니다.
5.#else#if 조건이 거짓일 때 실행되는 대안 블록을 지정합니다.
6.#ifndef매크로가 정의되어 있는지 검사하며, 정의되어 있지 않으면 참(TRUE)으로 평가됩니다.
7.#elif#if와 #else를 결합한 것으로, '그렇지 않고 만약'의 조건을 처리합니다.
8.#errorstderr 스트림으로 출력될 오류 메시지를 정의합니다.
9.#endif#if로 시작된 조건부 컴파일 블록을 종료합니다.
10.#pragma컴파일러에 특정 명령이나 옵션을 전달하는 데 사용됩니다.

마무리

C 전처리기는 단순히 코드를 치환하는 도구를 넘어, 헤더 파일 관리부터 조건부 컴파일까지 프로그램 구조를 유연하게 설계할 수 있게 해주는 핵심 요소입니다. 특히 #ifndef#endif를 활용한 헤더 중복 포함 방지(include guard)는 실무에서 반드시 알아야 할 패턴이므로, 각 지시문의 용도를 정확히 익혀두는 것이 좋습니다.