본문 바로가기
프로그래머의 길/C & C++

조건부 컴파일 전처리 명령어

by 제이콥케이 2007. 3. 26.
반응형


조건부 컴파일 지시어(#if, #elif, #else, #ifdef, #ifndef, #endif)

조건부 컴파일 지시어는 지정된 조건에 의하여 프로그램 파일의 특정한 부분을 컴파일하거나 컴파일하지 않게 하는 지시어이다. 조건부 컴파일 지시어의 의미를 알아 보자.

조건부
컴파일 지시어

의 미

#if 조건

#if 다음에 조건이 맞으면 #if와 #endif 사이의 문장들을 컴파일 한다.
조건에 맞지 않으면 #if와 #endif 사이를 컴파일 하지 않고 넘어간다. 

#elif 조건

#if, #ifdef, #ifndef의 조건에 맞지 않을 경우 또 다른 조건을 검색하기 위한 지시어로 사용된다.

#else 조건

#if, #ifdef, #ifndef의 조건에 맞지 않을 경우 #else와 #endif 사이의 문장들을 컴파일 한다.

#ifdef 문자열

문자열이 define 되었다면

#ifndef 문자열

문자열이 define 되지 않았다면

#endif

#조건부 컴파일 지시어를 마치게 해주는 지시어이다.
반드시 조건부 컴파일 지시어 마지막 부분에 있어야 한다.


다음은 #if 를 이용한 예를 보여준다. 문자열 “SEL”이 define 되었다면 “#define PI 3.14”을 컴파일하고 define 되었다면 컴파일하지 않는다.

#if defined SEL       
#define PI 3.14       
#endif                

다음은 #ifdef를 이용한 예를 보여준다. 문자열 “SEL”이 define 되었다면 “#define PI 3.14”을 컴파일하고 define 되었다면 컴파일하지 않는다.

#ifdef SEL       
#define PI 3.14       
#endif                

다음은 #ifndef를 이용한 예를 보여준다. 문자열 “SEL”이 define 되지 않았다면 “select_function()”을 컴파일하고 define 되었다면 컴파일하지 않는다.

#ifndef SEL       
select_function()   
#endif                

다음은 #if, #elif와 #else를 이용한 예를 보여준다. 문자열 “SEL1”이 define 되었다면 “select_function1()”을 컴파일하고 define 되지 않았다면 문자열 “SEL2”가 define 되었는지 확인하여 “SEL2“가 define 되었다면 ”select_function2()”을 컴파일하고 “SEL2"도 define 되지 않았다면 ”#define PI 3.14“을 컴파일한다.

#if defined SEL1
select_function1()
#elif defined SEL2
select_function2()
#else
#define PI 3.14
#endif                

다음은 #ifdef와 #else를 이용한 예를 보여준다. 문자열 “SEL”이 define 되었다면 “select_function()”을 컴파일하고 define 되지 않았다면 ”#define PI 3.14“을 컴파일한다.

#ifdef SEL
select_function()
#else
#define PI 3.14
#endif          


반응형