C# 預處理指令

2018-09-27 16:28 更新

預處理指令

預處理指令是一種給編譯器的指令,用來在實際的編譯開始之前預處理一些信息。

所有的預處理指令都以 # 開始,并且在一行預處理指令中,只有空白字符可以出現(xiàn)在指令之前。預處理指令沒有聲明,所以他們不需要以分號(;)結(jié)尾。

C# 編譯器不具有獨立的預處理機制;然而,指令執(zhí)行的時候就像是只有這一條一樣。在 C# 中,預處理指令被用來幫助條件編譯。不像 C 或 C++ 的指令,他們不能創(chuàng)建宏。一個預處理指令必須是這一行代碼中的唯一的指令。

C# 中的預處理指令

下面的表格中列出了 C# 中可用的預處理指令:

預處理指令描述
#define定義了一串字符,稱為符號。
#undef可以取消定義的符號。
#if測試一個或多個表達式的結(jié)果是否為真。
#else用于創(chuàng)建復合條件指令,和 #if 一起使用。
#elif用于創(chuàng)建復合條件指令。
#endif指出條件指令的結(jié)尾。
#line可以修改編譯器的行號,選擇性修改輸出錯誤和警告的文件名
#error從代碼的特定位置生成誤差
#warning從代碼的特定位置生成一級預警
#region當你使用 Visual Studio 代碼編譯器時,你可以展開或折疊一部分代碼塊
#engregion它標志著 #region 塊的結(jié)束

define 指令

#define預處理指令是用來創(chuàng)建符號常量的。

應(yīng)用 #define 可以定義一個符號,這個符號會作為一個表達式傳遞給 #if 指令,這個判斷會得到 ture 的 結(jié)果。語法如下:

    #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();
            }
        }
    }

編譯執(zhí)行上述代碼,得到如下結(jié)果:

    PI is defined

條件指令

你可以使用 #if 指令創(chuàng)建一個條件指令。條件指令可以用來判斷一個或多個符號是否為真。如果他們的結(jié)果為真,編譯器就會執(zhí)行 #if 和下一條指令間的所有代碼。

條件指令的語法如下:

    #if symbol [operator symbol]...

當你想測試的符號是 “symbol”這個名字的時候。你也可以使用 ture 和 false 或者提前使用反運算符操作這個符號。

operator symbol(運算符符號)是一種用于符號求值的運算符。運算符可以是下列之一:

  • == (相等)
  • != (不相等)
  • && (與)
  • || (或)

你也可以通過括號使用組符號和組運算符。條件指令用于編譯代碼生成 debug 或者是編譯特定配置時。一個條件指令以 #if 開頭并且必須明確的以 #endif 指令結(jié)束。

下面的程序示范了條件指令的使用方法:

    #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();
        }
    }

編譯執(zhí)行上述代碼,得到如下結(jié)果:

    DEBUG and VC_V10 are defined
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號