本文參考此處
預處理指示器(preprocessor directives)不是c++語句,所以不用分號 「;
」 結尾。
#if [defined()] / #ifdef / #ifndef
...#endif
例子1:
#define psqr(x) cout << "the square of x is:" << (x)*(x) << endl
psqr(3);
// 執行結果:
the square of x is:9
// 結果,這裡的x被當作普通文字對待,而不是可替換的token
例子2,修改後:
// 下面的 #x 將巨集引數x轉換成字串"x"
#define psqr(x) cout << "the square of " #x " is:" << (x)*(x) << endl
psqr(3);
// 執行結果
the square of 3 is:9
//結果,將引數的數字3字串化
#define say1(x) a##x
#define say2(x,y) x##y
#define say3(x,y,z) x##y##z
#define say_xn(x,n) cout << #x#n " is:" << x##n int ab = 30;
int abc = 100;
cout
<< say1(4) << endl; // 等價於 cout << a4 << endl;
cout
<< say2(a, b) << endl; // 等價於 cout << ab << endl;
cout
<< say3(a, b, c) << endl; // 等價於 cout << abc << endl;
say_xn(a, 4);
// 執行結果:
1030
100a4 is:10
// 單#和雙#的使用
巨集
描述__line__
當前源**行號
__file__
源檔名
__date__
日期:month day year
__time__
*the values of the predefined macros (except for __line__ and __file__) remainconstantthroughout the translation unit.
Cpp 異常處理
1.程式不可能不出錯 2.傳統的錯誤處理機制存在缺陷 1 通過返回值表示錯誤 缺點 錯誤處理流程比較複雜,逐層判斷,臃腫。優點 函式呼叫路徑中所有的區域性物件 棧物件 都能被右花括號正確地析構,不會記憶體洩漏。2 通過遠端跳轉處理錯誤 優點 不需要逐層判斷,一步到位處理錯誤,精煉。缺點 函式呼叫路徑...
mysql 預處理 MySQL的預處理技術
所謂的預處理技術,最初也是由mysql提出的一種減輕伺服器壓力的一種技術!傳統mysql處理流程 1,在客戶端準備sql語句 2,傳送sql語句到mysql伺服器 3,在mysql伺服器執行該sql語句 4,伺服器將執行結果返回給客戶端 這樣每條sql語句請求一次,mysql伺服器就要接收並處理一次...
c 預處理和預處理命令
預處理發生在編譯之前,預處理輸出的是乙個單一的檔案,這個檔案被送到編譯器,進行編譯。每條預處理命令都控制預處理器的行為。每條預處理命令佔據一行,有以下的格式 character 預處理命令 one of define,undef,include,if,ifdef,ifndef,else,elif,e...