C#預處理指令
預處理器指令編譯器預處理指令在給定的信息實際編譯開始之前。
所有的預處理指令以#開頭,隻使用空白字符在同一行上的預處理器指令之前出現。預處理器指令都冇有聲明,所以他們不以分號(;)結束。
C#編譯器不具有獨立的預處理;然而,該指令進行處理,就好像有一個。在C#預處理器指令用於在條件編譯幫助。不像C和C++指令,它們不是用來創建宏。預處理指令必須在一行中隻有唯一指令。
預處理器指令在C#列表
下表列出了C#中可用的預處理指令:
預處理指令 | 描述 |
---|---|
#define | 它定義了字符序列,稱為符號 |
#undef | 它可以取消定義的符號 |
#if | 它允許測試符號或符號來看看計算結果是否為true。 |
#else | 它允許創建複合條件指令,使用#if |
#elif | 它允許創建複合條件指令 |
#endif | 指定一個條件指令的末端 |
#line | 它可以讓修改編譯器的行號和(可選)的文件名輸出錯誤和警告 |
#error | 它允許在代碼生成從一個特定的位置的誤差 |
#warning | 它允許產生從一個特定的位置一級預警在代碼中 |
#region | 它可以讓你指定使用Visual Studio代碼編輯器的概述功能時展開或折疊代碼塊 |
#endregion | 它標誌著#region 塊的結束 |
#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指令來創建一個條件指令。有條件的指令是用於測試的象征或符號,看看計算結果為true。如果計算結果為true,編譯器評估計算 #if 和下一個指令之間的所有代碼。
有條件指令的語法是:
#if symbol [operator symbol]...
其中,符號是要測試的符號的名稱。還可以使用真假或預先準備使用反運算符號。
操作符是用於評價計算該符號的運算符。運算符可以是以下幾點:
-
== (相等)
-
!= (不相等)
-
&& (與)
-
|| (或)
也使用可以組符號和運算符括號。有條件的指令用於編譯代碼的調試版本或編譯的特定配置時。有條件指令與#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