C# 預(yù)處理器指令

2018-01-22 16:14 更新

C# 預(yù)處理器指令

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

最常見(jiàn)的預(yù)處理器指令是條件指令。

例子:


#define DEBUG

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

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

如果我們刪除DEBUG符號(hào),則不編譯該語(yǔ)句。

使用#if和#elif指令,我們可以使用||,&&和!運(yùn)算符執(zhí)行或,和,而不是對(duì)多個(gè)符號(hào)的運(yùn)算。

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


#if TESTMODE && !DEBUG
...

#error和#warning符號(hào)防止意外誤用條件指令。

例子

下表列出了預(yù)處理器偽指令。

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

編譯警告

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

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


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

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

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

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)