c#中的#define預處理指令不能定義替換常數。該指令現在只能定義用於條件編譯的符號,為#if、#elif、#else及#endif所用。
原始檔在進行編譯之前要進行一次檔案處理,這是由預處理器完成的。這種檔案處理只對原始檔進行文字處理而不進行任何編譯動作。所有預處理指令都以「#」符號開頭。
預處理識別以下指令識別以下指令:
#define #undef #if #elif #else #endif #error #warning #line #region #endregion
#pragma warning disable
#pragma warning restore
#if #elif #else #endif 指令可以完成,使用#define指令來定義一些指導預處理器修改原**的符號的工作。
if的作用是程式流控制,會直接編譯、執行。
#if是對編譯器的指令,其作用是告訴編譯器,有些語句行希望在條件滿足時才編譯。
#if使您可以開始條件指令,測試乙個或多個符號以檢視它們是否計算為true。如果它們的計算結果確實為true,則編譯器將計算位於#if與最近的 #endif 指令之間的所有**。例如,
#define debug
// ...
#if debug
console.writeline("debug version");
#endif
可以使用運算子 ==(相等)、!=(不相等)、&&(與)及||(或)來計算多個符號。還可以用括號將符號和運算子分組。
用#if以及 #else、#elif、#endif、#define 和 #undef 指令,可以包括或排除基於由乙個或多個符號組成的條件的**。這在編譯除錯版本的**或編譯特定配置時最為有用。
以#if指令開始的條件指令必須用#endif指令顯式終止。
#define使您可以定義乙個符號,通過將該符號用作傳遞給 #if 指令的表示式,使該表示式計算為true。
也可以用 /define 編譯器選項來定義符號。可以用 #undef 來取消定義符號。
用/define或#define定義的符號與具有同一名稱的變數不衝突。即,不應將變數名傳遞到預處理器指令,並且只能用預處理器指令計算符號。
用#define建立的符號的範圍是在其中定義該符號的檔案。
// preprocessor_if.cs
#define debug#define vc_v7
using system;
public class myclass
}
輸出
debug and vc_v7 are defined本文**於1:
本文**於2:
C 中if和 if區別
if的作用是程式流控制,會直接編譯 執行。if是對編譯器的指令,其作用是告訴編譯器,有些語句行希望在條件滿足時才編譯。if使您可以開始條件指令,測試乙個或多個符號以檢視它們是否計算為true。如果它們的計算結果確實為true,則編譯器將計算位於 if與最近的 endif 指令之間的所有 例如,複製 ...
C 中as 和 is 的區別
1.as在轉換的同時兼判斷相容性,如果無法進行轉換,則 as 返回 null 沒有產生新的物件 而不是引發異常。有了as就不要再用try catch來做型別轉換的判斷了。因此as轉換成功要判斷是否為null。2.as是引用型別型別的轉換或者裝箱轉換,不能用與值型別的轉換。如果是值型別只能結合is來強...
C和C 中const的區別
原文出自 一.c語言中的const const是c語言中保留的乙個關鍵字,它用來限定乙個變數是唯讀的,即不可變的。程式中使用const可以在一定程度上提高程式的健壯性,但是程式中使用過多的const,可能在對 的閱讀時增加一定的難度。1 用const修飾一般變數 注意在c語言中,用const修飾的變...