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

C 언어 전처리기 명령이란? 종류와 사용법 총정리

전처리기(Preprocessor)는 소스 코드가 컴파일러를 거치기 전에 먼저 처리하는 프로그램입니다. 전처리기는 '#' 기호로 시작하는 전처리기 지시문(명령)에 따라 동작하며, 컴파일 이전 단계에서 매크로 치환, 파일 포함 등 다양한 작업을 수행합니다.

전처리기 명령의 세 가지 종류

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

  • 파일 포함 지시문(File Inclusion Directives)

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

1. 매크로 치환 지시문

매크로 치환 지시문은 코드 내에서 특정 식별자(identifier)가 나타날 때마다 이를 미리 정의해 둔 문자열로 자동으로 대체하는 기능입니다. 상수를 의미 있는 이름으로 관리하거나 간단한 함수 형태의 매크로를 만들 때 유용하게 사용됩니다.

매크로를 정의하는 기본 문법은 다음과 같습니다.

#define 식별자 문자열

예를 들어 다음과 같이 작성할 수 있습니다.

#define PI 3.1415      /* 원주율 상수 정의 */
#define f(x) x * x     /* 함수형 매크로 정의 */
#undef PI             /* 정의된 매크로 PI 해제 */

예제 코드

#define wait getch()

main() {
   clrscr();
   printf("Hello");
   wait;
}

위 예제에서 'wait'라는 식별자는 getch()로 치환되므로, wait; 부분은 실제로 getch(); 로 바뀌어 실행됩니다.

실행 결과

Hello

2. 파일 포함 지시문

#include 지시문을 사용하면 함수 선언이나 매크로 정의가 담긴 외부 파일(헤더 파일)을 현재 소스 코드에 포함시킬 수 있습니다. 표준 라이브러리 함수를 사용할 때 필수적인 지시문입니다.

기본 문법은 다음과 같습니다.

#include <파일명>
#include "파일명"

꺾쇠 괄호(< >)를 사용하면 시스템 표준 헤더 디렉터리에서 파일을 찾고, 큰따옴표("")를 사용하면 현재 작업 디렉터리를 우선하여 파일을 찾습니다.

예제 코드

#include <stdio.h>

main() {
   printf("Hello");
}

실행 결과

Hello

위 예제에서 printf() 함수의 원형(정의)은 <stdio.h> 헤더 파일에 포함되어 있으므로, 해당 파일을 #include로 불러와야 정상적으로 컴파일됩니다.

3. 컴파일러 제어 지시문

C 전처리기는 '조건부 컴파일(Conditional Compilation)'이라는 강력한 기능을 제공합니다. 이를 활용하면 프로그램 내의 특정 코드 라인 또는 라인 그룹을 선택적으로 컴파일에 포함시키거나(ON) 제외시킬(OFF) 수 있습니다. 주요 지시문으로는 #if, #else, #elif, #endif, #ifdef, #ifndef 등이 있습니다.

예제 코드

#define LINE 1
#include <stdio.h>

main() {
   #ifdef LINE
      printf("this is line number one");
   #else
      printf("This is line number two");
   #endif
}

위 예제에서는 LINE이 #define으로 정의되어 있으므로 #ifdef 조건이 참이 되어, 첫 번째 printf 문만 컴파일됩니다.

실행 결과

this is line number one