English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
프리프로세서 명령은 컴파일러가 실제 컴파일 시작 전에 정보를 사전 처리하는 지시를 안내합니다.
모든 프리프로세서 명령은 #으로 시작하며, 프리프로세서 명령 이전에는 공백 문자만이 나타날 수 있습니다. 프리프로세서 명령은 문장이 아니므로 세미콜론(;)으로 끝나지 않습니다.
C# 컴파일러에는 독립된 프리프로세서가 없지만, 명령어가 처리될 때는 독립된 프리프로세서와 같이 처리됩니다. C#에서 프리프로세서 명령은 조건 컴파일링에서 작용합니다. C와 C++ 다른 점은 그것들이 매크로를 생성하는 데 사용되지 않는다는 것입니다. 프리프로세서 명령은 해당 행에서의 유일한 명령어입니다.
아래 표는 C#에서 사용할 수 있는 프리프로세서 명령을 나열합니다:
프리프로세서 명령 | 설명 |
---|---|
#define | 부호가 될 수 있는 문자열을 정의하는 데 사용됩니다. |
#undef | 부호를 취소 정의합니다. |
#if | 부호가 참인지 테스트합니다. |
#else | 복합 조건 명령을 생성하는 데 사용되며 #if와 함께 사용됩니다. |
#elif | 복합 조건 명령을 생성하는 데 사용됩니다. |
#endif | 조건 명령의 끝을 지정합니다. |
#line | 그것은 컴파일러의 행수를 수정하고(선택적으로) 오류와 경고의 파일명을 출력할 수 있습니다. |
#error | Nó允许从代码的指定位置生成一个错误。 |
#warning | Nó允许从代码的指定位置生成一级警告。 |
#region | Nó可以让您在使用 Visual Studio Code Editor 的大纲特性时,指定一个可展开或折叠的代码块。 |
#endregion | Nó标识着 #region 块的结束。 |
#define hướng dẫn tiền xử lý tạo ra các biến số hằng.
#define cho phép bạn định nghĩa một biến số, sau đó, bằng cách sử dụng biến số làm biểu thức được truyền vào lệnh #if, biểu thức sẽ trả về true. Cú pháp của nó như sau:
#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
Bạn có thể sử dụng lệnh #if để tạo điều kiện chỉ thị. Điều kiện chỉ thị được sử dụng để kiểm tra một biến có đúng không. Nếu đúng, trình biên dịch sẽ thực hiện mã giữa lệnh #if và lệnh tiếp theo.
조건 명령어의 문법:
#if symbol [operator symbol]...
그리고,symbol 는 테스트할 심볼 이름입니다. 또한 true와 false를 사용하거나 심볼 앞에 부정 연산자를 두어도 됩니다.
일반 연산자로는 다음이 있습니다:
== (같음)
!= (불 같음)
&& (및)
|| (또는)
또한 심볼과 연산자를 괄호로 묶을 수 있습니다. 조건 명령어는 디버깅 버전이나 지정된 구성을 컴파일할 때 코드를 컴파일하는 데 사용됩니다. 하나의 #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_V"}10 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