[C언어] 선행처리 3.조건부 컴파일
조건부 컴파일
정의
#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/0
int main(){
#if DEBUG_MODE
int a = 10, b = 20;
#elif HONEY_POT
int a = 10, b = 10;
#else
int a = 1, b = 2;
#endif
printf("a * b = %d", a * b);
return EXIT_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 프로그래밍 강의 (방송통신대 - 이병래)
// reading compass
이 글과 이어지는 경로
시리즈, 카테고리, 태그 겹침, 최신도를 점수화해 가까운 글일수록 중심에 배치합니다.
댓글 남기기