조건부 컴파일(conditional compile)이란 말 그대로 어떤 조건이 만족할 때에만 컴파일을 적용하도록 하는 것이다. 조건부 컴파일을 하는 방법은 일반적인 조건문을 사용하는 방법과 비슷하다. 단, 조건부 컴파일은 전처리기에 의해 수행된다.
조건부 컴파일을 위한 지시어 #ifdef, #else, #endif
#ifdef 지시어는 어떤 매크로가 이미 정의 되어 있는지 확인하기 위해 사용된다.
#ifdef CHECK
fprintf(stderr, "x: %d", x);
fprintf(stderr, "y: %d", y);
fprintf(stderr, "z: %d", z);
#endif //CHECK가 정의되 경우만 사이의 내용이 컴파일 된다.
위에서 #ifdef과 #endif 지시어로 둘러 싸인 부분은 CHECK라는 이름의 매크로가 정의되어 있는 경우만 컴파일된다. 다시 말하면 전처리기에서 CHECK가 정의되어 있을 때만 코드를 남겨 둔다는 것이다. #endef는 #ifdef과 같은 조건 관련 지시어를 끝내기위해 사용한다. 위와 같이 해 놓으면 디버깅이 필요한 경우에만 다음과 같이 미리 CHECK 매르로를 정의하면 된다.
#define CHECK
위와 같이 CHECK의 값 자체는 의미가 없으므로 단지 정의만 되어 있으면 된다. CHECK를 정의하지 않으면 코드는 불필요한 부분 없이 깔끔하게 컴파일될 것이다.
#else 지시어는 조건문의 else와 비슷한 역할을 한다.
#ifdef <identifier>
... ... //<identifier> 가 정의되어 있는 경우 컴파일된다.
#else
... ... //<identifier> 가 정의되어 있지 않는 경우 컴파일된다.
#endif
'프로그래밍' 카테고리의 다른 글
C언어에서 실수형의 출력 내용이 정확하지 않은 이유 (0) | 2008.04.25 |
---|---|
전처리기 (0) | 2008.04.25 |
EOF (0) | 2008.04.25 |
제어문자 (0) | 2008.04.25 |
strtok함수에 대해 (0) | 2008.04.25 |