1. #if #elif #else #endif
기존에 알고있는 조건문인 if else 와 동일한 내용이다 하지만 전처리기라는 부분에서 if else와 차이점은 매크로로 정의된 값에 따라 원하는 코드를 동작할 수도 있고 동작시키지 않을수도 있는 것이다.
#include <stdio.h>
#define NUM 10
int main() {
#if NUM == 10
printf("매크로로 정의된 NUM의 값은 10\n");
#elif NUM == 20
printf("매크로로 정의된 NUM의 값은 20\n");
#else
printf("매크로로 정의된 NUM의 값은 10도 20도 아님\n");
#endif
return 0;
}
#if 0, #if 1
평가값이 0 이면 다음줄 부터의 내용을 건너뛰고, 평가값이 0이 아니면 처리한다.
2. #ifdef
매크로가 정의되어있는지에 대한 결과만을 본다.
#include <stdio.h>
#define NUM 10
int main() {
#ifdef NUM
printf("매크로로 NUM이 정의되어 있습니다.\n");
#else
printf("매크로로 NUM이 정의되어 있지않습니다.\n");
#endif
return 0;
}
3. #ifndef
#ifndef는 2번의 #ifdef 와 완전 반대되는 개념이다. 'if not define' 이라는 개념으로 정의가 되지않았을 때 조건을 만족한다.위에서 사용한 #ifdef 를 반대로 사용하기만 하면 되지만 헤더파일의 중복선언을 막기위해서 많이 사용한다.
#include "hi.h"
#ifndef HI_H__
#define HI_H__
#endif
int main()
{
hi();
return 0;
}
출처 : C 언어 기초 (53) 조건부 전처리기 사용 (#if #else #elif #endif #ifdef #ifndef) : 네이버 블로그 (naver.com)
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 전처리기로 코드 영역 블록 설정 (0) | 2023.03.25 |
---|---|
C++ std::shared_ptr로 thread safe callback 구현하기 (0) | 2023.01.08 |
C++ 클래스 템플릿에 선언된 friend 함수를 외부에 정의하는 방법 (0) | 2023.01.03 |
C/C++ 예외상황에서의 포인터의 동작 (0) | 2022.12.17 |
C++ if/switch statement with initializer (0) | 2022.12.11 |