조건부 컴파일
-> 컴파일을 하는데 조건을 두어 컴파일 할지, 말지를 결정한다.

사용자가 값을 입력하여 컴파일 여부를 결정할 수 없다.
-> 값을 입력하는 시점은 컴파일이 모두 완료된 런타임 시점

(전역 변수나 지역 변수를 통해 비교 불가능)
-> 컴파일 이전에 조건을 비교해야 하기 때문에 전처리기 단계에서 조건을 비교한다.

##1. #if ~ #endif
-> if문을 사용하듯이 사용하면 된다.
-> 조건이 참일 경우 컴파일을 수행한다.

 

if       -> #if

else if -> #elif

else    -> #else

 

#define TEST 1

void main()
{
#if TEST > 0
 cout << "TEST는 0보다 크다." << endl;
#endif
}

#if는 기존 if와는 다르게 시작 구간과 종료 구간이 {}안이 아닌 #if를 선언한 시점부터 #endif 이전까지이다.

그래서 #if를 끝내려면 마지막에 #endif를 적어줘야한다.

 

 

#2 조건부 컴파일 #ifdef

-> define으로 정의되어 있다면 컴파일을 수행

#define ABCD

void main()
{
#ifdef ABCD
  cout << "ABCD는 정의되어 있음" << endl;
#endif
}

 

#3 조건부 컴파일_#ifndef ~ #endif

-> ifdef의 반대 의미이다.

-> define으로 정의되어 있지 않다면 수행

-> 주로 사용하는 방법은 1회만 수행하길 원할 때 사용한다.

#define ABCD

void main()
{
#ifndef ABCD
  cout << "ABCD는 정의되어 있지 않음" << endl;
#endif
}

 

 

 

 

 

'Programming > C++ Basic' 카테고리의 다른 글

C++ 레퍼런스 자료형  (0) 2020.09.08
C++ 파일 분할(.cpp, .h)  (0) 2020.09.08
C++ 매크로(#define)  (0) 2020.09.07
C++ 함수 포인터  (0) 2020.09.07
C++ 공용체(union)  (0) 2020.09.07

+ Recent posts