c預編譯 define相關

2021-08-30 01:26:55 字數 544 閱讀 9955

#是生成字串:

#define a(x) #x

a(bc) => "bc"

##是連線:

#define a(x) abc##x

a(123) => abc123

#error是生成編譯錯誤訊息:

#ifdef abc

#error something wrong...

#endif

//如果abc是已經定義的巨集,那麼編譯的時候就會顯示錯誤訊息something wrong...

//「標準」巨集定義乙個min 輸入兩引數輸出其中最小的

#define min(a,b) ((a)<= (b) ? (a) : (b) )

這種定義會帶來一些***,看下面的例子:

int x = 1, y = 2;

int main()

執行完min(x++、y++),我們期望x的值為2,y的值為3。

但是,實際的結果是,執行完mini(x++、y++)後,x的值為3,y的值為3,原因在於巨集展開後x++被執行了兩次。但暫時沒找到其它更好的辦法。

c語言中條件編譯相關的預編譯指令

條件編譯是根據實際定義巨集 某類條件 進行 靜態編譯的手段。可根據表示式的值或某個特定巨集是否被定義來確定編譯條件。最常見的條件編譯是防止重複包含標頭檔案的巨集,形式跟下面 類似 1 ifndef abcd h 2 define abcd h34 some declaration codes56 e...

c語言中條件編譯相關的預編譯指令

條件編譯是根據實際定義巨集 某類條件 進行 靜態編譯的手段。可根據表示式的值或某個特定巨集是否被定義來確定編譯條件。最常見的條件編譯是防止重複包含標頭檔案的巨集,形式跟下面 類似 1 ifndef abcd h 2 define abcd h34 some declaration codes56 e...

C語言中條件編譯相關的預編譯指令

本文主要介紹c語言的條件編譯指令 條件編譯是根據實際定義巨集 某類條件 進行 靜態編譯的手段。可根據表示式的值或某個特定巨集是否被定義來確定編譯條件。最常見的條件編譯是防止重複包含標頭檔案的巨集,形式跟下面 類似 ifndef abcd h define abcd h some declaratio...