程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#中的預處理指令

C#中的預處理指令

編輯:關於C#

與C++不同,C#沒有獨立的預處理器。C#中的預處理指令(pre-processing directives)僅僅用來與C保持一致,而並不是編譯器開始編譯代碼之前的一個單獨的處理步驟,它是作為詞法解析的一部分來執行的。

預處理指令都以#號開頭並位於行首(前面可以出現空格符)。在介紹條件編譯之前,我們先學習兩條用於定義符號和取消符號定義的預處理指令:#define和#undef。

#define指令對於有一點C語言知識的讀者來說再熟悉不過,它非常類似於C中的宏定義:

#define COUNT

這裡定義了符號COUNT,它的作用域是該定義所在的整個文件。需要注意的是,符號定義必須放在所有其它語句的前面,或者說是放在所有“實代碼”(real code)的前面。所以下面的代碼是錯誤的:

using System
#define COUNT

再看一下例子:

#define A

namespace N
{
#define B
#if B
class Class1{}
#endif
}

由於在第二個#define指令之前出現了“實代碼”,因而是錯誤的。

然而,下面的代碼卻是合法的,因為#if是不“實代碼”:

#define A

#if A
#define B
#endif

namespace N
{
#if B
class Class1{}
#endif
}
有時候我們想在源程序中取消某個符號的定義,這時就要用到#undef指令:

#undef COUNT

與#define一樣,#undef的作用域也是定義所在的整個文件,它也必須出現在所有“實代碼”之前。下面的例子定義了一個符號,然後又取消了它,第二個#undef指令雖然不起任何作用,但卻是合法的:

#define A

#undef A

#undef A

好了,簡單地介紹了預處理語句之後,我們就可以來學習如何使用定義的符號進行條件編譯了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved