C++

[C++] 조건부 컴파일(Conditional  compilation)

kugnuoy 2024. 1. 15. 16:32

C++ 에서는 #define을 사용하여 매크로를 만들 수 있다.

매크로는 크게 함수와 유사한 매크로, 객체와 유사한 매크로로 구분 할 수 있는데

 

객체와 유사한 매크로를 다시 대체 텍스트가 있는 매크로, 대체 텍스트가 없는 매크로로 구분할 수 있다.

// 1. 함수와 유사한 매크로
#define add(x, y) x+y


// 2-1. 대체 텍스트가 있는 객체와 유사한 매크로
#define MAX 9999

// 2-2. 대체 텍스트가 없는 객체와 유사한 매크로
#define PRINT

 

 

대체 텍스트가 없는 매크로는 주로 조건부 컴파일을 하기 위해 사용된다.

조건부 컴파일 전처리 지시자를 사용하면 컴파일할 조건이나 컴파일 하지 않을 조건을 지정할 수 있다.

#define PRINT

#ifdef PRINT
std::out << "PRINT defined" << std::endl;
#endif

#ifdef INPUT
std::out << "INPUT defined" << std::endl;
#endif

 

PRINT만 정의되었기 때문에

std::out << "PRINT defined" << std::endl; 만 컴파일 된다.

 

이를 이용해 헤더파일을 선언할 때 헤더가드를 포함시켜 코드를 작성하면 된다.

현재 최신 컴파일러는 #pragma 지시자를 사용한 단순한 헤더가드를 지원한다. (공식 c++ 아님)

#pragma once

// your code