程式設計技巧 巨集定義

2021-07-11 09:33:17 字數 845 閱讀 1153

我們來看看ios的nsassert的定義:

#if !defined(_nsassertbody)

#define nsassert(condition, desc, ...) \

do \

__pragma_pop_no_extra_arg_warnings \

} while(0)

#endif

吊吊的,就是用乙個巨集定義來實現的,那麼我們就不用看太多的內部實現細節,其中 \ 表示續行

同理,我們可以這樣實現乙個objc runtime獲取單例的方式:

#define instance_sdk()     class sdkclass = nsclassfromstring(@"exampleclass"); \

sel instancesdksel = nsselectorfromstring(@"sharedplatform"); \

id instancesdk = ((id(*)(id, sel))objc_msgsend)(sdkclass, instancesdksel);

呼叫的時候:

//[[exampleclass instancesdk] login];   原來的實現方式

instance_sdk()

sel loginsel = nsselectorfromstring(@"sdklogin");

((void(*)(id, sel))objc_msgsend)(instancesdk, loginsel);

這樣實現也是吊吊的,非常清爽。

巨集定義使用技巧

巨集定義使用技巧 1 把列舉值轉換為字串 define caseenum e case e printf e 2 利用二進位制表示式得到編譯期常量 define cat a,b a b cat 1,2 12 3 給標準斷言新增描述性注釋 define assertmsg a,b assert a b...

巨集定義相關技巧

寫乙個 標準 巨集min,這個巨集輸入兩個引數並返回較小的乙個。另外,當你寫下面的 時會發生什麼事 least min p b 解答 define min a,b a b a b min p b 會產生巨集的 剖析 這個面試題主要考查面試者對巨集定義的使用,巨集定義可以實現類似於函式的功能,但是它終...

巨集定義使用技巧

題這幾天面試題會遇到一些關於define 的用法,在這裡做下總結,紅色部分筆試常見題型。1.防止乙個標頭檔案被重複包含 ifndef comdef h define comdef h 標頭檔案內容 endif 2.得到乙個字的高位和地位位元組 define word lo byte word 255...