- #if, #elif, #else, #endif문
조건부 컴파일을 위한 것으로 특정 조건이 만족하면 컴파일 작업을 수행하고 그렇지 않으면 수행하지 않도록 하기 위해 사용된다.
조건부 컴파일을 위한 전처리 지시자 살피기 #include<stdio.h> #define MAX 20 void main() { int size; #if MAX > 100 size=100; #elif MAX > 10 size=10; #else size=0; #endif printf(" size = %d \n", size); }
- #ifdef, #ifndef문
특정 매크로가 정의되어 있는지를 확인하기 위해 사용된다.
#ifdef문은 특정 매크로가 정의되어 있는지를 물어 본다.
#ifndef문은 “if not define”, 특정 매크로가 정의되어 있지 않았는지를 물어 볼 때 사용한다.
#ifdef, #ifndef문 사용하기 |
#include<stdio.h> #define _MYDEBUG 10 #ifdef _MYDEBUG void sub(){ printf(" debug \n"); } #endif #ifndef _MYDEBUG void sub(){ printf(" release \n"); } #endif void main() { sub(); } |
- #undef문
#define과는 정반대의 역할을 하는 것으로 이미 정의된 기호 상수를 취소시켜 정의되지 않은 상태로 만들고자 할 때 사용한다.
#define SIZE 10 i = SIZE; #define SIZE 20 j = SIZE; |
위와 같이 SIZE를 중복 정의한 것이 되면 컴파일 시 에러가 발생하게 된다.
따라서 #undef를 사용하여 삭제 후 재 선언할 수 있다.
#define SIZE 10 i = SIZE; #undef SIZE #define SIZE 20 j = SIZE; |
#undef문 사용하기 |
#include<stdio.h> #define SIZE 10 void main() { int i, j; i=SIZE; #ifdef SIZE #undef SIZE #define SIZE 20 #endif j=SIZE; printf(" i=%d, j=%d \n", i,j); } |