67 – 전처리기(조건부 컴파일)

특정 조건이 성립할 때나 조건이 성립하지 않을 때 지정한 범위 내의 문장을 컴파일하거나 무시하고 컴파일하지 않는 것이 바로 조건부 컴파일이다. 조건부 컴파일의 전처리기 지시자에는 #if, #elif, #else, #endif, #ifdef, #ifndef 등이 있다.

일단 제일 많이 사용되는 #if, #elif, #else, #endif를 보자. 형식은 아래와 같으며, 수식 1이 참이면 실행 1을 컴파일하고, 수식 1이 거짓이고 수식 2가 참이면 실행 2를 컴파일한다. 모든 수식이 거짓이면 실행 n을 실행한다.

#if 수식 1
실행 1
#elif 수식 2
실행 2
……
#else
실행 n
#endif

if, else if의 사용과 같은 느낌이 들지 않는가? 사용이 똑같다. 전처리가 되어 있다는 것으로 인해 컴파일하는 코드의 길이가 달라질 수 있기 때문에 특정 환경, 특정 옵션에 맞는 프로그램을 개발하고자 할 때 많이 쓴다. C로 만들어진 프로그램에서 설치 옵션이나 실행 옵션 등이 있는 경우에 많이 이용하고, 운영체제 같은 큰 프로그램을 짜면 반드시 보게 될 것이다.

이건 아래의 예시를 보면 더 쉽다. 설명하지 않은 #ifndef가 있는데, 이건 정의되지 않았을 경우를 나타낸다. NAME이 정의되어 있기 때문에 NAME이 정의되었다는 문장이 출력되고 ADDRESS는 정의되지 않았기 때문에 #ifndef에 맞춰 정의되지 않았다는 문장이 출력된다.

스크린샷 2017-04-21 오후 4.43.12

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.