반응형
최근 C++를 다루게 되면서 코드를 보다보면 제목에 써있는 전처리기를 많이 보게 되어서 정리를 하려 합니다.
1. 설명
조건부 컴파일을 할 수 있는 지시어로
#ifdef는 코드 이전에 define이 되어 있었는지를 check,
#ifndef는 코드 이전에 define이 되어있지 않는지를 check,
#if는 일반 if~else문과 같지만 컴파일을 구분하여 돌릴수 있는 지시어
2. 사용 예시
#define DEBUG
int main(){
#ifdef DEBUG
print("defined\n");
#endif
#ifndef DEBUG
print("not defined\n");
#endif
return 0;
}
위와 같은 코드에서는 #ifndef 구문은 컴파일 조차 시도되지 않습니다
#ifdef, #ifndef는 define 여부를 check하지만, #if, #elif는 값을 직접 비교합니다
#define SEL 1
int main(){
#if SEL == 1
print("print 1\n");
#elif SEL == 2
print("print 2\n");
#else
print("print else\n");
#endif
return 0;
}
일반 조건문처럼 쓰면되지만, 컴파일을 돌리면 첫번째 구문만 컴파일에 포함이 되고
아래 두가지 구문은 포함이 되지 않습니다
'language > c++' 카테고리의 다른 글
[C ++] shallow copy vs deep copy (0) | 2021.05.08 |
---|
댓글