#ifdef 지시문, #else 및 #endif 정의된 매크로를 기반으로 컴파일러를 통해 컴파일할 코드를 지정하는 데 사용되는 논리적 사전 프로세서 지시문입니다. 이 지시문은 #if , #ifdef , #ifndef #else 또는 #elif 지시의 범위를 종료합니다. #elif 지시문은 C에서 else-if 문을 결합하여 사용하는 것과 유사한 작업을 수행합니다. 이 지시문은 해당 #if , #ifdef , #ifndef 또는 다른 #elif 지시문에 상수 식이 false이고 #elif 줄에 표시되는 추가 상수 식이 true인 경우 컴파일할 대체 소스 줄을 구분합니다. #elif 지시문은 선택 사항입니다. 조건이 false(0)이면 #if, #ifdef 또는 #ifndef 및 #else , #elif 또는 #endif 지시문 사이의 선은 무시됩니다. 조건부 전처리 블록은 #if, #ifdef 또는 #ifndef 지시문으로 시작한 다음 선택적으로 여러 #elif 지시문을 포함하고 선택적으로 #else 지시문을 하나만 포함하고 #endif 지시문으로 종료됩니다. 내부 조건부 전처리 블록은 별도로 처리됩니다. #ifndef 지시문은 #ifdef 검사한 조건의 반대를 확인합니다. 식별자가 정의되지 않았거나 #undef 정의가 제거된 경우 조건은 true(영하지 않음)입니다.

그렇지 않으면 조건은 false (0)입니다. #if , #ifdef 또는 #ifndef 확인 된 조건이 true (영하지 않음)인 경우 일치하는 #else (또는 #elif) 및 #endif 지시문 사이의 모든 줄이 무시됩니다. #if, #else 및 #elif(elif = else) 지시문은 지정된 조건이 충족되는 경우에만 다음에 오는 코드 부분이 컴파일되도록 합니다. 조건은 상수 식을 평가하는 데만 사용할 수 있습니다. 예를 들어 이 예제에서는 매크로 DEBUG가 정의되므로 #ifdef 내에 작성된 코드와 #else 실행됩니다. #if, #elif, #else, #ifdef 및 #ifndef 지시문은 내부 조건부 전처리 블록에 속하지 않는 첫 번째 #elif #else #endif 지시문까지 코드 블록을 제어합니다. 정의된 연산자는 #if 지시문을 한 번만 사용하여 많은 매크로를 확인하는 데 특히 유용합니다. 이러한 방식으로 많은 #ifdef 또는 #ifndef 지시문을 사용하지 않고도 한 줄에서 매크로 정의를 확인할 수 있습니다. 이 기능은 명령줄에서 정의를 전달할 수 있으므로 정의가 있는지 여부를 확인하는 데 유용합니다. 예: 필요한 #endif 지시문 수는 elif 또는 #else 지시문이 사용되는지 여부에 따라 변경됩니다. #if, #ifdef 및 #ifndef 지시문은 지정된 조건을 테스트하고(아래 참조) true로 평가하면 제어된 코드 블록을 컴파일합니다.

이 경우 후속 #else 및 #elif 지시문은 무시됩니다.