C++ 조건부 컴파일

2021. 8. 16. 10:47C++

728x90

조건부 컴파일 (conditional compile)

1) 정의

- 소스코드를 조건에 따라 선택적으로 컴파일하는 전처리 지시자

2) 종류

(1) #if ~ #endif

[사용법]

#if 조건식

컴파일할 문장

#endif

- 가장 기본적인 조건부 컴파일

- #if문의 조건식이 참이면 #if와 #endif 사이의 모든 문장을 컴파일한다

//--------------------------------------------------------------

(2) #if ~ #else ~ #endif

[사용법]

#if 조건식

컴파일할 문장 1

#else

컴파일할 문장 2

#endif

//--------------------------------------------------------------

(3) #if ~ #elif ~ #else ~ #endif

[사용법]

#if 조건식 1

컴파일할 문장 1

#elif 조건식 2

컴파일할 문장 2

#else

컴파일할 문장 3

#endif

//--------------------------------------------------------------

(4) #ifdef ~ #endif

[사용법]

#if 조건식 #if defined 조건식

컴파일할 문장 컴파일할 문장

#endif #endif

- 조건식에 매크로가 정의되어 있는지 검사할 때는

전처리 연산자인 defined를 사용한다.

- 만약 조건식에 해당하는 매크로의 정의를 취소하려면

#undef [매크로]를 #if문이 실행되기 이전에 기입한다.

//--------------------------------------------------------------

(5) #ifndef ~ #endif

[사용법]

#ifndef 조건식 #if !defined 조건식

컴파일할 문장 컴파일할 문장

#endif #endif

- 매크로명이 정의되어 있지 않은 경우를 확인할 때 사용한다

- #ifdef#ifndef 은 매크로의 정의 여부만 확인할 수 있기 때문에,

다른 연산자와 함께 조건식을 만들 때에는 defined !defined으로 작성해야 한다.

//--------------------------------------------------------------

(6) #error

- 조건을 만족하지 않는 경우 컴파일 자체를 중단할 때는 #error 지시자를 사용한다

//--------------------------------------------------------------

(3) 특징

- 프로그램의 호환성을 좋게 만든다.

- c언어의 기본 문법은 같아도 컴파일러와 OS에 따라

자료형의 크기나 지원되는 라이브러리 함수가 다를 수 있음.

- 따라서 조건부 컴파일을 이용하여 코드를 구별하면

서로 다른 컴파일러 환경에서도 컴파일이 가능한 코드를 만들수 있다.

728x90

'C++' 카테고리의 다른 글

C++ 소소한 에러 / 콘솔창 / SDK 버전  (0) 2021.08.16
C++ 전처리 지시자  (0) 2021.08.16
C++ STL  (0) 2021.08.14
C++ PlaySound  (0) 2021.08.14
C++ 클래스와 정보은닉  (0) 2021.08.12