#if(C# 참조)

업데이트: 2007년 11월

#if를 사용하면 기호를 테스트하여 true인지 여부를 확인하는 조건부 지시문을 시작할 수 있습니다. 기호가 true가 되면 컴파일러에서는 #if와 가장 가까운 #endif 지시문 사이의 모든 코드를 계산합니다. 예를 들면, 다음과 같습니다.

#define DEBUG
// ...
#if DEBUG
    Console.WriteLine("Debug version");
#endif

==(같음), !=(같지 않음), &&(AND) 및 ||(OR) 연산자를 사용하여 여러 기호를 계산할 수 있습니다. 괄호를 사용하여 기호와 연산자를 그룹화할 수도 있습니다.

설명

#if와 함께 #else, #elif, #endif, #define#undef 지시문을 사용하면 하나 이상의 기호 조건에 따라 코드를 포함하거나 제외할 수 있습니다. 이것은 코드를 디버그 빌드용으로 컴파일하거나 특정 구성용으로 컴파일할 때 매우 유용합니다.

#if 지시문으로 시작한 조건부 지시문은 명시적으로 #endif 지시문으로 종료해야 합니다.

#define을 사용하면 기호를 정의할 수 있습니다. 이때 정의한 기호를 #if 지시문에 전달되는 식으로 사용하면 식이 true가 됩니다.

또한 /define 컴파일러 옵션으로 기호를 정의할 수도 있습니다. 또한 #undef로 기호를 정의하지 않을 수도 있습니다.

/define 또는 #define으로 정의한 기호는 같은 이름의 변수와 충돌하지 않습니다. 즉, 변수 이름을 전처리기 지시문에 전달해서는 안 되며 기호는 전처리기 지시문으로만 계산할 수 있습니다.

#define으로 만든 기호의 범위는 해당 기호가 정의된 파일입니다.

예제

// preprocessor_if.cs
#define DEBUG#define VC_V7
using System;
public class MyClass 
{
    static void Main() 
    {
#if (DEBUG && !VC_V7)
        Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && VC_V7)
        Console.WriteLine("VC_V7 is defined");
#elif (DEBUG && VC_V7)
        Console.WriteLine("DEBUG and VC_V7 are defined");
#else
        Console.WriteLine("DEBUG and VC_V7 are not defined");
#endif
    }
}

DEBUG and VC_V7 are defined

참고 항목

개념

C# 프로그래밍 가이드

참조

C# 전처리기 지시문

기타 리소스

C# 참조