C# 전처리기 지시문
전처리기 지시문은 실제 컴파일이 시작되기 전에 정보를 전처리하도록 컴파일러에 지시합니다.
모든 전처리기 지시문은 #으로 시작합니다. 한 줄의 전처리기 지시문 앞에는 공백 문자만 나타날 수 있습니다. 전처리기 지시문은 명령문이 아니므로 세미콜론(;)으로 끝나지 않습니다.
C# 컴파일러에는 별도의 전처리기가 없지만 명령은 별도의 전처리기가 있는 것처럼 처리됩니다. C#에서는 전처리기 지시문을 사용하여 조건부 컴파일에서 작동합니다. C 및 C++ 지시문과 달리 매크로를 생성하는 데 사용되지 않습니다. 전처리기 지시문은 해당 행의 유일한 지시문이어야 합니다.
C# 전처리기 지시문 목록
다음 표에는 C#에서 사용할 수 있는 전처리기 지시문이 나열되어 있습니다.
전처리기 지시문 | Description |
---|---|
#define | 일련의 문자를 기호로 정의하는 데 사용됩니다. . |
#undef | 기호 정의를 해제하는 데 사용됩니다. |
#if | 기호가 참인지 테스트하는 데 사용됩니다. |
#else | #if와 함께 사용되는 복합 조건부 명령어를 만드는 데 사용됩니다. |
#elif | 복합 조건부 명령어를 만드는 데 사용됩니다. |
#endif | 조건부 지시문의 끝을 지정합니다. |
#line | 컴파일러의 줄 수와 (선택적으로) 오류 및 경고가 출력되는 파일 이름을 수정할 수 있습니다. |
#error | 코드의 지정된 위치에서 오류를 생성할 수 있습니다. |
#warning | 코드의 지정된 위치에서 레벨 1 경고를 생성할 수 있습니다. |
#region | Visual Studio Code Editor의 개요 기능을 사용할 때 확장 가능하거나 축소된 코드 블록을 지정할 수 있습니다. |
#endregion | #region 블록의 끝을 표시합니다. |
#define 전처리기
#define 전처리기 지시문은 기호 상수를 생성합니다.
#define을 사용하면 #if 지시문에 전달된 표현식으로 기호를 사용하여 표현식이 true를 반환하도록 기호를 정의할 수 있습니다. 구문은 다음과 같습니다.
#define symbol
다음 프로그램에서 이를 보여줍니다.
#define PI using System; namespace PreprocessorDAppl { class Program { static void Main(string[] args) { #if (PI) Console.WriteLine("PI is defined"); #else Console.WriteLine("PI is not defined"); #endif Console.ReadKey(); } } }
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
PI is defined
조건부 지시문
#if 지시문을 사용하여 A를 생성할 수 있습니다. 조건부 지시어. 조건부 명령어는 기호가 참인지 테스트하는 데 사용됩니다. true인 경우 컴파일러는 #if와 다음 명령어 사이의 코드를 실행합니다.
조건부 지시문의 구문:
#if symbol [operator symbol]...
여기서 symbol은 테스트할 기호의 이름입니다. true 및 false를 사용하거나 기호 앞에 부정 연산자를 배치할 수도 있습니다.
연산자 기호 는 기호를 평가하는 데 사용되는 연산자입니다. can 연산자는 다음 연산자 중 하나일 수 있습니다.
==(평등)
!=(불평등)
&& (and)
|| (또는)
괄호를 사용하여 기호와 연산자를 그룹화할 수도 있습니다. 조건부 지시문은 디버그 빌드에서 코드를 컴파일하거나 지정된 구성을 컴파일할 때 사용됩니다. #if 지시문으로 시작하는 조건부 지시문은 명시적으로 #endif 지시문으로 끝나야 합니다.
다음 프로그램은 조건부 명령의 사용을 보여줍니다.
#define DEBUG #define VC_V10 using System; public class TestClass { public static void Main() { #if (DEBUG && !VC_V10) Console.WriteLine("DEBUG is defined"); #elif (!DEBUG && VC_V10) Console.WriteLine("VC_V10 is defined"); #elif (DEBUG && VC_V10) Console.WriteLine("DEBUG and VC_V10 are defined"); #else Console.WriteLine("DEBUG and VC_V10 are not defined"); #endif Console.ReadKey(); } }
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
DEBUG and VC_V10 are defined