Cpp的預處理Preprocessor 筆記

2021-06-29 02:22:55 字數 1375 閱讀 8597

本文參考此處

預處理指示器(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...