C# 預處理器指令

2018-01-22 16:14 更新

C# 預處理器指令

預處理器指令為編譯器提供有關代碼區(qū)域的附加信息。

最常見的預處理器指令是條件指令。

例子:


#define DEBUG

class MyClass{
   int x;
   void OneMethod(){
       #if DEBUG
          Console.WriteLine ("Testing: x = {0}", x);
       #endif
   }
    ...
}

在上面的代碼中,OneMethod被編譯為有條件地依賴于DEBUG符號的存在。

如果我們刪除DEBUG符號,則不編譯該語句。

使用#if和#elif指令,我們可以使用||,&&和!運算符執(zhí)行或,和,而不是對多個符號的運算。

如果定義了TESTMODE符號并且未定義DEBUG符號,則以下指令指示編譯器包括以下代碼:


#if TESTMODE && !DEBUG
...

#error和#warning符號防止意外誤用條件指令。

例子

下表列出了預處理器偽指令。

預處理器指令Action
#define symbol定義符號
#undef symbol未定義符號
#if symbol[operator symbol2]...符號到測試運算符是==,!=,&&和||后跟#else,#elif和#endif
#else對隨后的#endif執(zhí)行代碼
#elif symbol[operator symbol2]結合#else分支和#if測試
#endif結束條件指令
#warning text在編譯器中輸出警告文本
#error text在編譯器中輸出錯誤文本
#pragma warning [disable | restore]禁用或恢復編譯器警告
#line [number["file"] | hidden]number指定源代碼中的行; file是在計算機輸出中出現(xiàn)的文件名;
#region name標記輪廓的開始
#endregion結束輪廓區(qū)域

編譯警告

為此,編譯器允許您使用#pragma warning指令選擇性地抑制警告。

在這個例子中,我們指示編譯器不要警告我們消息未被使用的字段:


public class Foo{
   static void Main() { }
   #pragma warning disable 414
      static string Message = "Hello";
   #pragma warning restore 414
}

省略#pragma warning指令中的數(shù)字將禁用或恢復所有警告代碼。

我們可以使用/warnaserror編譯代碼,以告訴編譯器將任何殘留警告視為錯誤。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號