본문 바로가기

프로그래밍 언어/C언어

[C언어] 전처리 지시자(preprocess directives), 자주 사용되는 전처리 지시자

  • 전처리지시자란 컴파일이 시작되기 전에 소스 코드를 처리하기 위한 명령어입니다. 전처리기는 이러한 지시자들을 해석해 조건부 컴파일, 매크로 치환, 파일 포함 등을 수행합니다.
  • 전치리 과정에서 처리되는 문장은 #으로 시작합니다.

자주 사용되는 전처리 지시자

 

#inlude 

#include <stdio.h>  // 표준 라이브러리 포함
#include "myheader.h"  // 사용자 정의 헤더 파일 포함
  • 외부 헤더 파일을 프로그램에 포함합니다.
  • 대표적인 헤더파일 stdio.h 
  • 표준 라이브러리 파일을 포함할 때는 < > 사용하고, 사용자 정의 파일은 " " 사용합니다.
  • puts(), printf(), scanf(), putchar(), getchar() 등과 같은 입출력 함수가 정보에 정의됩니다

 

#define

#define PI 3.14  // 매크로 정의
#define SQUARE(x) ((x) * (x))  // 매크로 함수 정의
  • 매크로를 정의할 때 사용합니다. 반복되는 상수나 코드를 간단하게 치환할 때 유용합니다

 

#undef

#undef PI // PI 매크로 정의 해제
  • 이전에 정의한 매크로를 해제할 때 사용합니다

 

#ifdef / ifndef

#ifdef DEBUG
    printf("디버그 모드입니다.\n");
#endif
#ifndef PI
    #define PI 3.14
#endif
  • 매크로가 정의되었는지 여부에 따라 조건부 컴파일을 수행합니다

 

#if / #elif / #else / #endif

#define VERSION 2

#if VERSION == 1
    printf("버전 1입니다.\n");
#elif VERSION == 2
    printf("버전 2입니다.\n");
#else
    printf("알 수 없는 버전입니다.\n");
#endif
  • 조건에 따라 코드 블록을 컴파일할지 결정합니다

 

#pragma

#pragma warning(disable : 4996)  // 특정 경고 메시지 비활성화 (MSVC)
  • 컴파일러에게 특정 동작을 지시합니다. 컴파일러마다 지원하는 #pragma 옵션이 다를 수 있습니다

 

#error

#if !defined(VERSION)
    #error "VERSION이 정의되지 않았습니다."
#endif
  • 전처리 단계에서 강제로 에러를 발생시킵니다

 

#line

#line 100 "example.c"
  • 소스 코드의 행 번호를 변경하거나 파일 이름을 지정합니다(디버깅에 유용).

 


요약

 

 

 

 

  • #include: 파일 포함
  • #define: 매크로 정의
  • #undef: 매크로 해제
  • #ifdef / #ifndef: 조건부 컴파일
  • #if / #elif / #else / #endif: 조건 처리
  • #pragma: 컴파일러 지시
  • #error: 에러 강제 발생
  • #line: 행 번호 지정

 

 

 

출처: 챗GPT (https://gptonline.ai/ko/)