C 程式設計(十) C 預處理器

2021-09-07 09:25:25 字數 2251 閱讀 3106

c#中的預處理器指令

#if如果 c# 編譯器遇到最後面跟有 #endif 指令的 #if 指令,則僅當指定的符號已定義時,它才會編譯這兩個指令之間的**。

c# 中的 #if 語句是 boolean,僅測試符號是否已定義。

運算子 &&(與)和 ||(或)可用來評估多個符號是否已定義。 還可以用括號將符號和運算子分組。

結合使用 #if 與 #else、#elif、#endif、#define 和 #undef 指令,可以根據乙個或多個符號是否存在來包含或排除**。在編譯除錯版本的**或針對特定配置進行編譯時,這會很有用。

以 #if 指令開始的條件指令必須用 #endif 指令顯式終止。

#else

#else 允許您建立復合條件指令,因此,如果前面的 #if 或(可選)#elif 指令中的任何表示式都不為 true,則編譯器將計算 #else 與後面的 #endif 之間的所有**。

#elif

#elif 使您得以建立復合條件指令。如果前面的 #if 和前面的任何 #elif(可選)指令表示式的計算結果都不是 true,則將計算 #elif 表示式。如果 #elif 表示式計算為 true,編譯器將計算位於 #elif 和下乙個條件指令之間的所有**。

使用 #elif 更簡單,因為每個 #if 都需要乙個 #endif,而 #elif 即使在沒有匹配的 #endif 時也可以使用。

#endif

#endif 指定以 #if 指令開頭的條件指令的結尾

#define

#define 可讓您定義符號。 當您將符號用作傳遞給 #if 指令的表示式時,此表示式的計算結果為 true

注意:不能像在 c 和 c++ 中的通常做法一樣,使用 #define 指令來宣告常數值。最好是將 c# 中的常數定義為類或結構的靜態成員。如果具有多個像這樣的常數,可以考慮建立乙個單獨的「constants」類來儲存這些常數。

例如:#define debug 

#define vc_v6 

using system; 

public class myclass  } 

如上所示:由於debug 和 vc_v6 都定義了,所以,高亮**執行.其他**不執行.

#undef

#undef 使您可以取消符號的定義,以便通過將該符號用作 #if 指令中的表示式,使表示式的計算結果為 false。

#define debug

#undef debug

using system

class mytest

static void main()

#if debug

console.writeline(「debug is defined」);

#else

console.writeline(「debug is not defined」);

#endif

}執行結果為:debug is not defined

#warning

#warning 使您得以從**的特定位置生成一級警告。 例如:

#define debug

class mainclass

static void main()

#if debug

#warning debug is defined

#endif

#error 

#error使您可以從**中的特定位置生成錯誤。例如:

#define debug

class mainclass

static void main()

#if debug

#error debug is defined

#endif

#region

#region 是大家最為熟悉的指令,它使您可以在使用 visual studio **編輯器的大綱顯示功能時指定可展開或摺疊的**塊。 在較長的**檔案中,能夠摺疊或隱藏乙個或多個區域會十分便利,這樣,您可將精力集中於當前處理的檔案部分。 下面的示例演示如何定義區域:

#region myclass definition

public class myclass

static void main()

#endregion

#region 塊必須以 #endregion 指令終止。

#region 塊不能與 #if 塊重疊。但是,可以將 #region 塊巢狀在 #if 塊內,或將 #if 塊巢狀在 #region 塊內。

#endregion

#endregion 標記 #region 塊的結尾

C 預處理器

偶爾翻c 的教材,看到了一些以前自己不太關注的角落。參考教材 c 大學教程 harvey m.deitel 和paul james deitel著。預處理發生在編譯之前,包括把其他檔案包含到要編譯的檔案中 定義符號常量和巨集 程式 的條件編譯以及預處理指令的條件執行。對應的,預處理指令有 檔案包含命...

C 預處理器

預處理器是一些指令,指示編譯器在實際編譯之前所需完成的預處理。所有的預處理器指令都是以井號 開頭,只有空格字元可以出現在預處理指令之前。預處理指令不是 c 語句,所以它們不會以分號 結尾。我們已經看到,之前所有的例項中都有 include指令。這個巨集用於把頭檔案包含到原始檔中。c 還支援很多預處理...

C 預處理器

預處理器是一些指令,指示編譯器在實際編譯之前所需完成的預處理。所有的預處理器指令都是以井號 開頭,只有空格字元可以出現在預處理指令之前。預處理指令不是 c 語句,所以它們不會以分號 結尾。我們已經看到,之前所有的例項中都有 include指令。這個巨集用於把頭檔案包含到原始檔中。c 還支援很多預處理...