Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 #if, #elif, #else, #endif 전처리기 지시문 사용하는 방법

C#의 모든 전처리기 지시문(preprocessor directive)은 #으로 시작하며, 한 줄에서 지시문 앞에는 공백 문자(white-space)만 올 수 있습니다. 또한 전처리기 지시문은 일반적인 문장(statement)이 아니기 때문에 세미콜론(;)으로 끝내지 않습니다.

#if 지시문

#if 지시문은 정의된 기호(symbol)가 참(true)으로 평가되는지 검사할 때 사용합니다. 조건이 참이면 이후에 오는 코드 블록이 컴파일됩니다.

#else 지시문

#else는 #if와 함께 사용되어 복합 조건부 지시문을 구성할 수 있게 해줍니다. 앞선 조건들이 모두 거짓일 경우 실행할 코드를 지정합니다.

#elif 지시문

#elif(else if)는 여러 조건을 순차적으로 검사하는 복합 조건부 지시문을 만들 때 사용합니다. 이전 조건이 거짓일 경우 다음 조건을 평가합니다.

#endif 지시문

#endif는 조건부 지시문의 끝을 나타냅니다. #if로 시작한 조건부 컴파일 블록은 반드시 #endif로 닫아 주어야 합니다.

다음 예제는 #if, #elif, #else, #endif 지시문의 실제 사용법을 보여 줍니다.

예제

#define One
#undef Two

using System;

namespace Demo {
    class Program {
        static void Main(string[] args) {
            #if (One && TWO)
            Console.WriteLine("Both are defined");
            #elif (ONE && !TWO)
            Console.WriteLine("ONE is defined and TWO is undefined");
            #elif (!ONE && TWO)
            Console.WriteLine("ONE is defined and TWO is undefined");
            #else
            Console.WriteLine("Both are undefined");
            #endif
        }
    }
}

출력 결과

Both are undefined

예제 설명

위 예제에서 One이라는 기호는 정의되었고, Two는 정의 해제(undefined)되었습니다. 그런데 C#의 전처리기 기호는 대소문자를 구분하기 때문에 ONE, TWO(모두 대문자)는 각각 One, Two와 다른 기호로 취급됩니다. 따라서 모든 조건식이 거짓으로 평가되고, 최종적으로 #else 블록의 "Both are undefined"가 출력됩니다. 실제 프로젝트에서 조건부 컴파일을 사용할 때는 기호 이름의 대소문자를 항상 일관되게 유지하는 것이 중요합니다.