常用的巨集定義

2021-09-09 05:32:10 字數 480 閱讀 8845

比較兩個數的大小

#define max(a,b) a>b?a:b

#define min(a,b) ab?(a>c?a:c):(b>c?b:c))

#define min(a,b,c) (a附:

c語言巨集定義 #define max(a,b) a>b?a:b 有什麼隱患?

或者說 #define max(a,b) ((a)>(b)?(a):(b)),如果不加括號有什麼不一樣嗎?

因為巨集定義是在預編譯階段把巨集的內容拷貝的源**的相應位置

如果#define max(a,b) a>b?a:b這樣寫的話

那麼如下表示式 max(a,b)+1就展開為

a>b?a:b+1

冒號後面就是b+1了,自然與當初的想法相違背了

所以要加上括號。

常用巨集定義

1 防止乙個標頭檔案被重複包含 ifndef comdef h define comdef h 標頭檔案內容 endif 檔案開頭處 define debug,在 中加除錯 ifdef debug endif 2重新定義一些型別,防止由於各種平台和編譯器的不同,而產生的型別位元組數差異,方便移植。t...

常用巨集定義總結

今天,和一位oasis談了一些關於巨集定義的一些問題,頗有所得。特錄於此。起因是他看到open sourc中經常有這樣的原始碼,感覺無法理解 define swap a,b do while 0 總感覺這樣的定義中的do while有點蛇足的味道,感覺真的是沒有什麼必要。開始我也是這樣覺得的,因為是...

iOS常用巨集定義

獲取當前螢幕的寬高 define kscreenw uiscreen mainscreen bounds size.width define kscreenh uiscreen mainscreen bounds size.height 判斷當前系統版本 define ios9 uidevice c...