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

C#에서 #error 및 #warning 지시문 사용하는 방법

C#에는 코드의 특정 위치에서 의도적으로 오류나 경고를 발생시킬 수 있는 전처리기 지시문이 있습니다. 바로 #error#warning입니다. 이 두 지시문은 주로 조건부 컴파일(#if, #endif)과 함께 사용되어, 개발 중에 필수 조건이 충족되지 않았을 때 컴파일러를 통해 명확한 메시지를 전달하는 데 유용합니다.


#error 지시문이란?

#error 지시문은 코드의 특정 위치에서 컴파일 오류를 강제로 발생시킵니다. 이 지시문이 실행되면 컴파일이 실패하며, 지정한 사용자 정의 오류 메시지가 출력됩니다. 예를 들어, 프로젝트에 반드시 정의되어야 하는 기호(심볼)가 누락된 경우 빌드 자체를 막아버리는 안전장치로 활용할 수 있습니다.

예제

using System;

namespace Demo {
    class Program {
        public static void Main(string[] args) {
            #if (!ONE)
            #error ONE is undefined
            #endif
            Console.WriteLine("Generating a user-defined error!");
        }
    }
}

위 프로그램을 실행하면 기호 ONE이 정의되어 있지 않으므로 다음과 같이 사용자 정의 오류가 발생하고 컴파일에 실패합니다.

출력 결과

Compilation failed: 1 error(s), 0 warnings
error CS1029: #error: 'ONE is undefined'

#warning 지시문이란?

#warning 지시문은 코드의 특정 위치에서 수준 1(Level 1) 경고를 생성합니다. #error와 달리 컴파일은 계속 진행되며 프로그램도 정상적으로 실행됩니다. 치명적이지는 않지만 개발자가 인지해야 할 사항이 있을 때 주의를 환기시키는 용도로 적합합니다.

예제

using System;

namespace Demo {
    class Program {
        public static void Main(string[] args) {
            #if (!TWO)
            #warning TWO is undefined
            #endif
            Console.WriteLine("Generates a warning!");
        }
    }
}

위 프로그램을 실행하면 경고가 생성되지만, 오류가 아니므로 콘솔 출력은 정상적으로 표시됩니다.

출력 결과

warning CS1030: #warning: `TWO is undefined'
Generates a warning!

#error와 #warning의 차이점 정리

두 지시문의 핵심적인 차이는 다음과 같습니다.

  • #error: 컴파일을 중단시키는 오류(CS1029)를 발생시킵니다. 빌드가 실패하며 프로그램이 실행되지 않습니다.
  • #warning: 컴파일은 계속 진행되는 경고(CS1030)를 발생시킵니다. 프로그램은 정상적으로 빌드되고 실행됩니다.

두 지시문 모두 조건부 컴파일 지시문인 #if, #endif와 결합하여 사용하면, 특정 플랫폼이나 구성(Configuration)에서 누락된 설정을 컴파일 시점에 즉시 확인할 수 있어 코드 품질 관리에 큰 도움이 됩니다.