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

C 언어 전처리기 지시문 완벽 정리: 개념부터 예제까지

전처리기(Pre-processor)는 소스 코드가 컴파일러를 통과하기 전에 이를 먼저 처리하는 프로그램입니다. 전처리기는 다양한 명령줄, 즉 지시문(directive)의 제어에 따라 동작합니다.

전처리기 지시문은 일반적으로 main 함수 앞의 소스 프로그램에 위치하며, 첫 번째 열(column)에서 # 기호로 시작하고 문장 끝에 세미콜론(;)을 붙이지 않는다는 점이 일반 코드와 다릅니다.

자주 사용되는 전처리기 지시문은 다음과 같습니다.

  • #define
  • #undef
  • #include
  • #ifdef
  • #endif
  • #if
  • #else 등

전처리기 지시문은 용도에 따라 크게 세 가지 범주로 나눌 수 있습니다.

  • 매크로 치환 지시문(Macro Substitution Directive)
  • 파일 포함 지시문(File Inclusion Directive)
  • 컴파일러 제어 지시문(Compiler Control Directive)

매크로 치환 지시문(Macro Substitution Directive)

매크로 치환 지시문은 특정 식별자(identifier)를 지정된 문자열로 대체하는 기능입니다. 상수 정의나 간단한 함수 형태의 매크로를 만들 때 유용하게 활용됩니다.

구문(Syntax)

#define identifier string

예제

단순 매크로: #define MAX 500

인수가 있는 매크로: #define sqrt(x) x*x

중첩 매크로:

#define A 10
#define B A+1

위 예제에서 B는 A+1, 즉 10+1로 치환되어 사용됩니다.

파일 포함 지시문(File Inclusion Directive)

파일 포함 지시문은 외부 파일의 내용을 현재 소스 파일에 그대로 삽입할 때 사용됩니다. 주로 헤더 파일을 불러올 때 활용됩니다.

구문(Syntax)

#include "filename" 또는 #include <filename>

예를 들면 다음과 같습니다.

#include <stdio.h>
#include "FORM.C"

<> 꺾쇠 괄호를 사용하면 컴파일러가 표준 라이브러리 디렉터리에서 헤더 파일을 찾고, 큰따옴표("")를 사용하면 현재 작업 디렉터리에서 해당 파일을 먼저 검색합니다.

컴파일러 제어 지시문(Compiler Control Directives)

컴파일러 제어 지시문은 컴파일러의 동작을 직접 제어할 수 있게 해주는 지시문입니다. C 전처리기는 조건부 컴파일(conditional compilation) 기능을 제공하며, 이를 활용하면 프로그램 내 특정 줄 또는 줄 그룹을 조건에 따라 켜거나 끌 수 있습니다.

대표적인 예로 #ifdef#ifndef가 있으며, 이들은 특정 매크로가 정의되어 있는지 여부에 따라 코드 블록의 컴파일 여부를 결정합니다. 디버깅 코드나 플랫폼별 코드를 관리할 때 매우 유용합니다.