728x90
반응형



전처리문


: 실질적인 컴파일 이전에 미리 처리되는 문장을 말하며, 선행 처리기라고도 한다. 따라서 컴파일러는 사용자가 작성한 코드를 컴파일 하기 전에 전처리문에서 정의해놓은 작업을 먼저 수행하게 된다. 



  • 파일 처리를 위한 전처리문 : #include
  • 형태 처리를 위한 전처리문 : #define, #undef
  • 조건 처리를 위한 전처리문 : #if, #ifdef, #else, #elif, #endif
  • 에러 처리를 위한 전처리문 : #error
  • 디버깅을 위한 전처리문 : #line
  • 컴파일 옵션 처리를 위한 전처리문 : #pragma

조건 처리를 위한 전처리문은 어떤 조건에 대한 검사를 하고, 그 결과를 참(0이 아닌 값) 또는 거짓(0)으로 돌ㄹ준다. 

#if : ~이 참 이라면
#ifdef : ~이 정의되어 있다면
#else : #if나 #ifdef에 대응
#elif : else + if
#endif : #if, #ifdef, #infdef 이 끝남






1. #include 


: 헤더 파일과 같은 외부 파일을 읽어서 포함시키고자 할 때 사용


#include <stdio.h>
#include "sample.h"



2. #define


: 상수 값을 지정하기 위한 예약어인 매크로, 구문의 상수로 치환함 


#define SUM(x) ((x) = (x)+(x))



3. #undef


: #define으로 이미 정의된 매크로를 무효화

#define SUM(x) ((x) = (x)+(x))
#undef SUM(x)



4. #if ~ #endif


: if 랑 아주 비슷한 구문으로, 어떠한 구문을 컴파일 할지 안할지 지정 가능


#define test 1
#if test A
      source code
#endif


아래 소스는 거짓이 되기 때문에 source code 부분은 컴파일 되지 않는다.


#if 0
source code ...
#endif



5. #ifdef ~ #endif


: 컴파일 할 때 아래와 같이 쓴다면 상수 2로 치환되어 전처리기가 컴파일러에게 넘겨준다.


MYDEF를 정의하고(값은 아직 가지지 않은 상태), YOURDEF가 정의되어있으면 BASE 10, MYDEF가 정의되어있으면 2

#define MYDEF
#ifdef YOURDEF
#define BASE 10
#elif MYDEF
#define BASE 2
#endif







참고자료 1 : http://sarghis.com/blog/802/



728x90
반응형