您的位置:首頁(yè) > 軟件資訊 > 編程技巧 > 網(wǎng)站開(kāi)發(fā)
來(lái)源:北大青鳥(niǎo)飛迅校區(qū)|發(fā)布時(shí)間:2013-04-22 14:01:16
預(yù)編譯又稱為預(yù)處理,是做些代碼文本的替換工作。處理#開(kāi)頭的指令,比如拷貝#include包含的文件代碼,#define宏定義的替換,條件編譯等,就是為編譯做的預(yù)備工作的階段,主要處理#開(kāi)始的預(yù)編譯指令。
下面對(duì)C#中的預(yù)編譯指令進(jìn)行介紹:
1、#define和#undef
用法:
#define DEBUG
#undef DEBUG
#define告訴編譯器,我定義了一個(gè)DEBUG的一個(gè)符號(hào),他類似一個(gè)變量,但是它沒(méi)有具體的值,可以將它看為一個(gè)符號(hào)而已。#undef就是刪除這個(gè)符號(hào)的定義。如果符號(hào)DEBUG沒(méi)定義過(guò),則#undef不起作用,否則#define不起作用。二者都必須放在源代碼之前。二者的順序看代碼的順序:
#define DEBUG
#undef DEBUG
這樣的話,DEBUG是沒(méi)有定義的,如果二者換個(gè)順序,編譯器就認(rèn)為DEBUG被定義了
2、#if、#elif、#else、#endif
這個(gè)告訴編譯器進(jìn)行編譯代碼的流程控制?紤]下面代碼:
#if DEBUG
Console.Write("debug");
#elif RELEASE
Console.Write("realse");
#else
Console.Write("other");
#endif
以上代碼就是說(shuō)如果定義了DEBUG則輸出debug,定義了RELEASE,則輸出realse,否則輸出other。如果定義了DEBUG和REALSE會(huì)怎么樣呢?各位可以自己試一下。
3、#warning、#error
通過(guò)這兩個(gè)指定可以告訴編譯器,出一個(gè)警告還是錯(cuò)誤信息。除了錯(cuò)誤信息以后,編譯將停止。
參考下面的代碼:
#if DEBUG ------〉該DEBUG如果選中當(dāng)前狀態(tài)為DEBUG,則這個(gè)默認(rèn)為#define
#warning “現(xiàn)在是Ddbug狀態(tài)”
#elif RELEASE ------〉如果選中release狀態(tài)的話,這個(gè)確沒(méi)有默認(rèn),不知道我試驗(yàn)的對(duì)不對(duì)
#warning “現(xiàn)在是Realse狀態(tài)”
#else
#error“并清楚什么狀態(tài)”
#endif
4、#region 和#endregion
這個(gè)兩個(gè)用來(lái)組成代碼塊
5、#line (這個(gè)指定的使用不太明白,參考MSDN)
這個(gè)指令可以改jian變編譯器在警告和錯(cuò)誤信息中顯示的文件名和行號(hào)信息,用#line default把行號(hào)恢復(fù)為默認(rèn)的行號(hào)。
下面的示例說(shuō)明如何報(bào)告與行號(hào)關(guān)聯(lián)的兩個(gè)警告。#line 200 指令迫使行號(hào)為 200(盡管默認(rèn)值為 #7)。另一行 (#9) 作為默認(rèn) #line 指令 的結(jié)果跟在通常序列后。
示例1:
// preprocessor_line.cs
public class MyClass2
{
public static void Main()
{
#line 200
int i; // CS0168 on line 200
#line default
char c; // CS0168 on line 9
}
}
示例2:
全程面授,不高薪都難
申請(qǐng)成功后,我們將在24小時(shí)內(nèi)與您聯(lián)系
招生熱線: 4008-0731-86 / 0731-82186801
學(xué)校地址: 長(zhǎng)沙市天心區(qū)團(tuán)結(jié)路6號(hào)
Copyright © 2006 | 湖南大計(jì)信息科技有限公司 版權(quán)所有
湘ICP備14017520號(hào)-3