比較兩個數的大小:
#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...