#if, #elif, #else, #endif 등의 지시어와 해당 지시어가 가리키는 조건에 따라, 컴파일할 코드를 선택할 수 있게 하는 기능이다.
이 때 if 등의 뒤에 오는 조건문은 반드시 참(True, 1 이상의 정수)과 거짓(False, 0)중 하나의 결과값을 가져야 한다.
사용법
1
2
3
4
5
6
7
8
9
10
#if 조건문
코드...// if 조건문에 해당하는 경우 실행됨#elif 조건문
코드...// if 조건문에 해당하지 않고, elif 조건문에 해당하는 경우 실행됨#else
코드...// if, elif 조건문에 모두 해당되지 않을 경우 실행됨#endif // 조건부 컴파일 문 종료
예시
아래와 같은 예시 코드가 있다고 해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define DEBUG_MODE ?
#define HONEY_POT ?
// 4가지 경우의 수 테스트 DEBUG 1/0 HONEY_POT 1/0intmain(){#if DEBUG_MODE
inta=10,b=20;#elif HONEY_POT
inta=10,b=10;#else
inta=1,b=2;#endif
printf("a * b = %d",a*b);returnEXIT_SUCCESS;}
DEBUG_MODE 와 HONEY_POT 의 값에 따라 main 함수의 출력값은 아래와 같이 달라진다.
DEBUG_MODE
HONEY_POT
출력값
1
0
a * b = 200
0
1
a * b = 100
1
1
a * b = 200
0
0
a * b = 2
Reference
C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)
Comments