導航:首頁 > 源碼編譯 > 控制編譯的代碼

控制編譯的代碼

發布時間:2025-09-05 00:26:18

A. C#必備知識之預編譯指令

預編譯又稱為預處理 是做些代碼文本的替換工作 處理#開頭的指令 比如拷貝#include包含的文件代碼 #define宏定義的替換 條件編譯等 就是為編譯做的預備工作的階段 主要處理#開始的預編譯指令

下面對C#中的預編譯指令進行介紹

#define和#undef

用法

#define DEBUG

#undef DEBUG

#define告訴編譯器 我定義了一個DEBUG的一個符號 他類似一個變數 但是它沒有具體的值 可以將它看為一個符號而已 #undef就是刪除這個符號的定義 如果符號DEBUG沒定義過 則#undef不起作用 否則#define不起作用 二者都必須放在源代碼之前 二者的順序看代碼的順序

#define DEBUG

#undef DEBUG

這樣的話 DEBUG是沒有定義的 如果二者換個順序 編譯器就認為DEBUG被定義了

#if #elif #else #endif

這個告訴編譯器進行編譯代碼的流程式控制制 考慮下面代碼

#if DEBUG Console Write( debug );#elif RELEASE Console Write( realse );#else Console Write( other );#endif

以上代碼就是說如果定義了DEBUG則輸出debug 定義了RELEASE 則輸出realse 否則輸出other 如果定義了DEBUG和REALSE會怎麼樣呢?各位可以自己試一下

#warning #error

通過這兩個指定可以告訴編譯器 出一個警告還是錯誤信息 除了錯誤信息以後 編譯將停止

參考下面的代碼

#if DEBUG 〉該DEBUG如果選中當前狀態為DEBUG 則這個默認為#define #warning 現在是Ddbug狀態 #elif RELEASE 〉如果選中release狀態的話 這個確沒有默認 不知道我試驗的對不對 #warning 現在是Realse狀態 #else #error 並清楚什麼狀態 #endif

#region 和#endregion

這個兩個用來組成代碼塊

#line (這個指定的使用不太明白 參考MSDN)

這個指令可以改jian變編譯器在警告和錯誤信息中顯示的文件名和行號信息 用#line default把行號恢復為默認的行號

下面的示例說明如何報告與行號關聯的兩個警告 #line 指令迫使行號為 (盡管默認值為 # ) 另一行 (# ) 作為默認 #line 指令 的結果跟在通常序列後

示例

// preprocessor_line cspublic class MyClass { public static void Main() { #line int i; // CS on line #line default char c; // CS on line }}

示例

下面的示例說明調試器如何忽略代碼中的隱藏行 運行此示例時 它將顯示三行文本 但是 當設置如示例所示的斷點並按 F 鍵逐句通過代碼時 您將看到調試器忽略了隱藏行 另請注意 即使在隱藏行上設置斷點 調試器仍會忽略它

lishixin/Article/program/net/201311/15246

閱讀全文

與控制編譯的代碼相關的資料

熱點內容
直流馬達如何連接5v單片機 瀏覽:259
後綴為win的文件怎麼解壓 瀏覽:800
壓縮包解壓後為什麼一張白紙 瀏覽:583
伺服器和雲盒子 瀏覽:170
python畫cad電氣圖 瀏覽:417
三菱plcfx3sa編程電纜 瀏覽:312
山西視頻加密防盜 瀏覽:837
華為mml命令查看用戶量 瀏覽:905
場論朗道pdf 瀏覽:369
如何使用qtquick編譯器 瀏覽:47
山西高配伺服器雲伺服器 瀏覽:740
為什麼編譯按f9沒反應 瀏覽:119
購物app都適合買什麼東西 瀏覽:273
savetxt函數python 瀏覽:575
編譯器小端改大端 瀏覽:639
華為安卓哪些文件夾能刪除 瀏覽:402
手機samp伺服器地址 瀏覽:205
phpformat函數 瀏覽:565
單片機由線 瀏覽:592
如何查找方舟編譯過的app 瀏覽:898