Preprocessor Directive   전처리 지시자, 선행처리 지시자

(2021-01-07)

1. [C 언어]  전처리 / 선행 처리전처리 / 선행 처리 이란?
     - 컴파일하기 전에 원시 프로그램을 단순 처리하는 컴파일러의 한부분 
     - 사실상, 단지 텍스트 조작에 불과하고, 문법이나 의미에 대해서는 거의 고려치 않음

  ㅇ C 언어에서, 주요 전처리 기능 셋
     -  헤더 파일을 병합/포함(#include)하여 언어를 확장해 주는 기능
     -  매크로 치환 (주로, #define 활용)
     -  조건 번역 (#if 등)


2. [C 언어]  전처리/선행처리를 위한 지시자

  ㅇ (전처리 지시자)
     -  컴파일 환경에 맞게 원시 프로그램을 처리하는 방법을 일러주는 지시자

  ㅇ (유의할 점)
     -  반드시 #로 시작함
     -  한 줄에 하나씩 씀
     -  통상 프로그램 첫 칸부터 쓰여짐
     -  명령문 끝에 세미콜론(;)을 붙이지 않음

  ㅇ (종류)
     -  매크로 확장 지시자   : #define, #undef
     -  조건부 컴파일 지시자 : #if, #else, #elif, #endif, #ifdef, #ifndef 
     -  외부 파일 지시자     : #include
     -  기타 지시자          : #error, #line


3. [C 언어]  주요 전처리 (전처리 지시자) 例

  ㅇ (특정 파일 병합)
     -  #include : 파일 포함
        . <파일명> : C 언어 컴파일러 내 설정된 include 디렉토리에서 해당 파일을 찾음
        . "파일명" : 현재, 소스 파일이 있는 디렉토리를 먼저 찾고,
                     후에, include 디렉토리를 찾음

  ㅇ (매크로 지원)
     -  #define  : 매크로 정의
        . 예) #define 매크로명 값;
     -  #undef   : 매크로 정의 해제

  ㅇ (조건부 컴파일 지원)
     -  조건부 컴파일은,
        . 목적 : 조건에 따라, 소스 코드의 해당 부분 `#if ~ #endif 등`의 컴파일 여부를 제어함
        . 용도 : 플랫폼,운영체제를 구분하며 컴파일, 디버깅,테스트 등에 사용하는 등  
     -  #if      : 조건이 참일 경우
     -  #else    : 조건이 거짓일 경우
     -  #ifdef   : 매크로가 정의되어 있는 경우 
     -  #ifndef  : 매크로가 정의되어 있지 않은 경우 
     -  #endif   : 조건부 컴파일의 종료

  ㅇ (컴파일 과정 지원)
     -  #line    : 행번호 출력
     -  #pragma  : 시스템 종별에 따라 다른 의미를 줌

  ※ 한편,
     - 전처리 대상 및 결과 파일들은 모두가 읽을 수 있는 텍스트 형태의 파일 임



Copyrightⓒ written by 차재복 (Cha Jae Bok)
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"