C#六種預處理指令
時間:2020-07-16 作者:管理員(yuán) 點擊:651
一(yī)、#define和#undef
#define可讓您定義符号。當您将符号用作傳遞給 #if 指令的表達式時,此表達式的計算結果爲true。而#undef正好相反,它使您可以取消符号的定義,以便通過将該符号用作 #if 指令中(zhōng)的表達式,使表達式的計算結果爲false。
定義方法爲關鍵詞 + 空格 + 要定義的符号,例如
#define DEBUG //申明符号DEBUG
#undef DEBUG //删除符号DEBUG
它告訴編譯器存在給定名稱的符号,在本例中(zhōng)定義的符号是DEBUG。這有點類似于申明一(yī)個變量,但這個變量本身沒有真正的值,隻是存在而已。這個符号不是實際代碼的一(yī)部分(fēn),而隻在編譯器編譯代碼的時候存在。在C#代碼中(zhōng),它沒有任何意義。
有三點需要注意的是:
1、申明必須在最底部、using指令之前。
2、如果符号已經存在,那麽申明就沒有意義了。同樣如果符号本來就不存在,那麽删除也是不起作用的。
3、另外(wài)預處理指令是不需要用分(fēn)号結束的,它認爲一(yī)行就隻有一(yī)個命令。
二、#if、#elif、#else和#endif
對應語句中(zhōng)的if elseif else 語句,#endif是結尾,告訴編譯器是否要對某段代碼執行編譯。和#define和#undef配合使用,需要注意的是:如果使用#if,那麽一(yī)定記得使用#endif來關閉哦,因爲編譯器認爲從#if開(kāi)始後到#endif之間的代碼都是屬于#if或者#else的。示例代碼如下(xià)
#define Debug //定義Debug
#if Debug
Console.WriteLine("調試版");
#endif
三、#waring和#error
使用這兩個指令可以檢查#define是否出錯,當編譯器遇到他們的時候會分(fēn)别産生(shēng)警告和錯誤。另外(wài)使用#waring語句還可以提醒自己做過的事情。
如果編譯器遇到#warning,則會将#warning指令後面的文本内容作爲警告内容發出,然後繼續編譯。
如果不小(xiǎo)心遇到#error指令。則會将#error後面的爲本作爲錯誤消息顯示給用戶,然後編譯器停止編譯。當然也就不會産生(shēng)IL代碼了。這
兩個指令就可以讓我(wǒ)(wǒ)們想起之前是不是使用#define做錯了什麽事,而使用#warning指令可以讓我(wǒ)(wǒ)們想起曾經做過什麽事。
四、#region和#endreginon
将一(yī)段代碼标記給任意指定的一(yī)塊,可以被編譯器識别、讓程序的可讀性更高。便于查看,便于組織代碼,将相同功能的代碼塊包含其中(zhōng),可以展開(kāi)或關閉。
五、#line
用于改變編譯器在警告和錯誤信息中(zhōng)顯示的文件名和行号信息。使用方式是:#line 100 。 恢複默認的行号的方式是:#line default
六、#pragma
可以抑制或恢複指定的編譯警告。#pragma warning disable 0219:抑制警告(0219是錯誤代碼), #pragma warning restore:恢複警告。