C 中的預處理指令

2021-04-09 04:11:20 字數 1621 閱讀 4128

c#中的預處理指令

作為預處理中的一對:#region name ,#endregion可能是大家使用得最多的,我也常用它來進行**分塊,在乙個比較長的cs檔案中,這麼做確實是一件可以讓你使**更清晰的好辦法,vs也自動用這個來包含自動生成的**,它這麼做既可以使開發人員更清晰的檢視自己的**,也開了乙個好頭,使更多人使用#region。

c#中還有好幾對預處理指令,可能大家就用得比較少了。

#define symbol

#undef symbol

#if symbol [operator symbol2]...

#else

#elif symbol [operator symbol2]

#endif

#warning text text指在編譯器輸出中的警告文字

#error text  text指在編譯器輸出中的錯誤資訊

#line number [file]

關於#define要說明幾點,#define debug 等效於不寫這句話,你要不定義它才一定要寫上#undefin debug

(c# essentials一書中說 #define debug 等效於#define debug true,不過這個好像有問題)

這一段**可以說明好幾個命令:

#define debug

#define vc_v6

using system;

public class myclass }

我們可以用這些指令來自動處理測試期和發布期資料庫的連線字串之類的工作

#if !release

constr = testsqlserverconnectionstring

#else

constr = releasesqlserverconnectionstring

#endif

在編**時加上一句#undef resease,發布後刪除這一句就行了。

#define debug

using system;

namespace syntaxtest }

} 以上**會在編譯時產生乙個警告。

#define debug

using system;

namespace syntaxtest }

} 以上**會在編譯時產生乙個錯誤,編譯不通過,所以我們可以利用以上兩種指令進行一些自定義的編譯檢測。

#line 使您得以修改編譯器的行號以及(可選)錯誤和警告的檔名輸出。

#line [ number ["file_name"] | default ]

number

要為源**檔案中後面的行指定的編號。

"file_name"(可選)

希望出現在編譯器輸出中的檔名。預設情況下,使用源**檔案的實際名稱。檔名必須括在雙引號 ("") 中。

default

重置檔案中的行編號。

備註 #line 可能由生成過程中的自動中間步驟使用。例如,如果中間步驟從原始的源**檔案中移除行,但是您仍希望編譯器基於檔案中的原始行號生成輸出,則可以移除行,然後用 #line 模擬原始行號。

public class myclass2 }

C 預處理指令

1.define 通常和 if一起使用 使用 define可以定義乙個符號,並通過將該符號用作表示式傳遞給 if 指令,使該表示式的計算結果為true 比如 preprocessor if.cs define debug define vc v7 using system public class ...

C預處理指令

一 預處理的由來 在c 的歷史發展中,有很多的語言特徵 特別是語言的晦澀之處 來自於c語言,預處理就是其中的乙個。c 從c語言那裡把c語言預處理器繼承過來 c語言預處理器,被bjarne博士簡稱為cpp,不知道是不是c program preprocessor的簡稱 二 常見的預處理功能 預處理器的...

C 預處理指令

巨集定義指令定義了乙個識別符號 巨集名 及乙個字串,在源程式中每次遇到該識別符號時,均以定義的字串替換它 巨集替換 巨集名和引數間不能有空格,識別符號和字串間可有任意空格 字串中應習慣對巨集引數加上括號,這樣使用巨集時,如果實參是表示式,則不易出錯 巨集替換只作巨集名和引數替換,不做計算,不做表示式...