#ifdef 및 #ifndef 지시문
특정 전처리기 상수 또는 매크로가 정의되었는지 여부를 결정하는 전처리기 지시문입니다.
#ifdef identifier ... |
---|
#endif |
#ifndef identifier ... |
#endif |
매개 변수
항목 | 설명 |
---|---|
identifier |
확인할 상수 또는 매크로의 식별자입니다. |
설명
#if를 사용할 수 있는 모든 곳에서 #ifdef 및 #ifndef 지시문을 사용할 수 있습니다. #ifdef 문은 ) 지시문과 동일합니다. 이러한 지시문은 C 또는 C++ 소스 코드에서 선언된 식별자가 아니라 #define 지시문을 사용하여 정의된 식별자의 존재 여부만 확인합니다.
이러한 지시문은 이전 버전 언어와의 호환성을 위해서만 제공됩니다. #if 지시어와 함께 정의된 연산자를 사용하는 것이 좋습니다.
#ifndef 지시문은 #ifdef에서 확인하는 조건의 반대 조건을 확인합니다. 식별자가 정의되지 않은 경우 조건은 true(0이 아님)입니다. 그렇지 않으면 조건은 false(0)입니다.
예제
식별자는 /D 옵션을 사용하여 명령줄에서 전달할 수 있습니다. /D로 최대 30개의 매크로를 지정할 수 있습니다. 정의는 명령줄에서 전달될 수 있으므로 정의가 존재하는지 여부를 확인하는 데 유용합니다. 다음 예에서는 이 동작을 사용하여 테스트 모드에서 애플리케이션을 실행할지 여부를 결정합니다.
// PROG.CPP
#ifndef test
#define final
#endif
int main()
{
}
다음 명령을 사용하여 컴파일하면 prog.cpp가 테스트 모드에서 컴파일됩니다. 그렇지 않으면 최종 모드에서 컴파일됩니다.
CL.EXE /Dtest prog.cpp