常用巨集定義總結

2021-05-26 16:11:53 字數 855 閱讀 6080

今天,和一位網友oasis談了一些關於巨集定義的一些問題,頗有所得。特錄於此。起因是他看到open sourc中經常有這樣的原始碼,感覺無法理解:#define swap(a,b) do while(0)。總感覺這樣的定義中的do-while有點蛇足的味道,感覺真的是沒有什麼必要。開始我也是這樣覺得的,因為是while(0)嘛,總感覺不用do-while,只用{}也是可以解決問題的。後來我們經過測試得出這樣的結論:用這個語句,完全是程式設計師追求嚴謹的性格決定的風格。因為如果這樣定義巨集,那麼如上面的swap巨集,就只能像函式一樣使用,這樣在句子後面跟上分號:swap(a,b);。而如果只用{}來定義的話,那麼使用中加不加分號就都可以了,就會比較混亂而且不嚴謹。

如果使用{}的話,會在if else語句中加分號不好用。而且,強制加分號,表明了這個巨集不可以當作運算元來使用。

c語言巨集定義技巧- -                                       c語言巨集定義技巧(常用巨集定義)  寫好c語言,漂亮的巨集定義很重要,使用巨集定義可以防止出錯,提高可移植性,可讀性,方便性 等等。下面列舉一些成熟軟體中常用得巨集定義。。。。。。

1,防止乙個標頭檔案被重複包含

#ifndef comdef_h

#define comdef_h

//標頭檔案內容

#endif

2,重新定義一些型別,防止由於各種平台和編譯器的不同,而產生的型別位元組數差異,方便移植。

typedef  unsigned char      boolean;     /* boolean value type. */

typedef  unsigned long int  uint32;      /* unsigned 32 bit value */

常用巨集定義

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

iOS常用巨集定義

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

iOS 常用巨集定義

字串是否為空 define kstringisempty str str iskindofclass nsnull class str nil str length 1?yes no 陣列是否為空 define karrayisempty array array nil array iskindof...