전처리기는 실질적인 컴파일 이전에 미리 처리되는 문장으로 선행처리기 라고도 합니다.

컴파일러는 사용자가 작성한 코드를 컴파일하기에 앞서 전처리문에서 정의해 놓은 작업들을 먼저 수행하는데요. 이렇게 하면 기존에 있는 소스를 지우지 않고 부분적으로 컴파일을 할 수 있습니다.


종류는  #define, #if, #ifdef, #ifndef, #defined, #undef 등이 있습니다.


ANSI 표준에 따른 C의 전처리문의 종류


- 파일 처리를 위한 전처리문 : #include

- 형태 정의를 위한 전처리문 : #define, #undef

- 조건 처리를 위한 전처리문 : #if, #ifdef, #ifndef, #else, #elif, #endif

- 에러 처리를 위한 전처리문 : #error

- 디버깅을 위한 전처리문 : #line

- 컴파일 옵션 처리를 위한 전처리문 : #pragma



오늘은 이중 조건처리를 위한 전처리문을 살펴보겠습니다.


#if ~ #endif

: 우리가 아는 if랑 아주 비슷합니다. 어떤 구문을 컴파일 할지 안할지를 지정할 수 있습니다.


if 문에서 참, 거짓을 구분해 컴파일 됩니다. A가 1로 참이니 #if 문 아래의 코드가 컴파일 됩니다.



#ifdef ~ #endif

:  뒤의 식별자가 #define으로 미리 정의 되어있으면 컴파일 됩니다.  



#findef _헤더명_H_ ~ #endif

: 헤더 파일이 겹치는 것을 막기 위해 사용됩니다. 여러 파일을 만들어 처리하다 보면 이미 include 된 헤더파일을 또 include 할 수 있는데 이런경우 syntex 에러가 납니다. 이것을 방지하기 위해 그냥 필수적으로 헤더를 작성할 때 써주면 됩니다.


헤더 파일이 이미 선언되어 있다면 무시하고 넘어갑니다. .




이상 조건처리를 위한 전처리문을 살펴보았습니다.