<b></b> C#定義了多個預處理指令,它們可以改變編譯系統解釋源程式檔案的方式。在把程式翻譯為目标代碼之前,預處理指令首先對源檔案中的文本産生作用,即編譯哪些文本。C#中所有的預處理指令都以#開頭,并且每個預處理指令都單獨占用一行。C#2.0中的預處理指令如下表。
C#預處理指令
<b>7.2.1 #define</b><b>指令 </b>
<b></b>
#define指令用于定義一個稱為符号(symbol)的字元序列。#if和#elif指令可以判斷某個符合是否已經存在,并據此控制編譯過程。#define指令的基本形式如下:
#define symbol
注意,這裡沒有以分号結束,因為它不是C#的語句,而是一個預處理指令。#define和symbol之間至少要用一個空格隔開。C#該指令不同于C和C++中的#define指令(C、C++中是用來定義宏的)。
例如:
#define Windows
7.2.2 #if<b>、</b><b>#elif</b><b>、</b><b>#else</b><b>和</b><b>#endif</b><b>指令 </b>
<b></b>#if指令的基本形式如下:
#if symbol_expression_1
statement_sequence_1
#elif symbol_expression_2
statement_sequence_2
#else
statement_sequence_n
#endif
<b></b>其中,symbol_expression_i是一個symbol或多個symbol構成的邏輯表達式。如果表達式的值為真,則編譯statement_sequence_i,如果所有的symbol_expression都為假,則編譯statement_sequence_n
例 P7_5
<b></b>
<b>7.2.3 #undef</b><b>指令 </b>
#undef指令可以取消之前定義的符号,基本形式如下:
#undef symbol
#define SMALL
//這個位置之前SMALL是被定義的
#if SMALL
#undef SMALL
<b>7.2.4 #error</b><b>指令 </b>
#error指令主要用于調試,它可以迫使編譯器停止編譯。該指令的基本形式如下:
#error error_message
其中,error_message是錯誤資訊。例如:
#error An error occurred here!
7.2.5 #warning<b>指令 </b>
#warning類似于#error,不過它産生的是警告消息而不是錯誤消息。是以,編譯過程不會停止。其基本形式如下:
#warning warning_message
7.2.6 #line<b>指令 </b>
#line指令可以為它所在的檔案設定行号和檔案名。編譯過程中如果出現錯誤或警告就會用到這裡的行号和檔案名。#line指令的基本形式為:
#line number "filename"
其中,number是任意的正整數,它用作新行的行号。可選的filename表示一個任意有效的檔案辨別符,它被用作新的檔案名。#line主要用于調試和特殊的應用程式。
#line指令還有兩個選秀,一個是default,它根據原來的位置傳回行号。其用法為:
#line default
另一個是hidden,在逐漸調試一個程式的時候,hidden選項允許編譯器跳過該指令與下一個不包含hidden選項的#line指令之間的行。其用法如下:
#line hidden
7.2.7 #region<b>和</b><b>#endregion</b><b>指令 </b>
#region和#endregion用于定義一個區域,該區域可以在Visual Studio IDE的大綱視圖中被擴充或收縮。其基本形式如下:
#region region_name
//code
#endregion
其中,region_name用于指定區域的名稱
7.2.8 #program<b>指令 </b>
<b></b>#program指令是C#2.0新增的,它用于給出指令,例如為編譯器指定選項。其基本形式如下:
#program option
其中,option是傳遞給編譯器的指令。
在C#2.0中,#program支援兩個選項。一個是warning,它用于啟用或禁用某個具體的編譯器警告。對于的命名如下:
#program warning disable warnings //禁用警告
#program warning restore warnings
<b> </b>
其中,warnings是一個逗号分隔的警告編号清單。例如:
#program warning disable 168 //禁用168号警告
另一個選項是checksum。它用于為ASP.NET項目生成校驗和。其基本形式如下:
#program checksum "filename""{GUID}""check-sum"
其中,filename是檔案名,GUID是與檔案名相關的全局唯一辨別符,check-sum是一個包含校驗和的十六進制數。該字元串必須包含偶數個數字。