abs int 巨集定義 巨集定義和巨集方法

2021-10-25 17:19:15 字數 2234 閱讀 5202

巨集定義和巨集方法

定義機型

#define is_iphone5 ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(640, 1136), [[uiscreen mainscreen] currentmode].size) : no)

#define is_iphone6 ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(750, 1334), [[uiscreen mainscreen] currentmode].size) : no)

#define is_iphone6p ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(1242, 2208), [[uiscreen mainscreen] currentmode].size) : no)

定義手機系統型號

#define kosversion [[uidevice currentdevice].systemversion floatvalue]

#define kos_ios7 (osversion >= 7)

#define kos_ios8 (osversion >= 8)

#define kos_ios9 (osversion >= 9)

巨集定義螢幕寬度和高度

#define kscreensize [uiscreen mainscreen].bounds.size

#define kscreenheight ([[uiscreen mainscreen] bounds].size.height)

#define kscreenwidth ([[uiscreen mainscreen] bounds].size.width)

定義列印的東西

#define dlog(fmt, ...) nslog((@"[檔名:%s]\n" "[函式名:%s]\n" "[行號:%d] \n" fmt), __file__, __function__, __line__, ##__va_args__);

通過rgb獲得乙個顏色

static inline uicolor * getbackgoundcolor(cgfloat r,cgfloat g,cgfloat b,cgfloat alpha)";

nspredicate *validatetest = [nspredicate predicatewithformat:@"self matches %@", validatecontent];

return [validatetest evaluatewithobject:mobilephone];

比較大小和取絕對值

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

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

#define abs(a) ((a) < 0 ? (-(a)) : (a))

隱藏方法警告的方法

#define suppressperformselectorleakwarning(stuff) \

do while (0)

新增觀察者的巨集定義方法

#define register_selector(sel, notif_name) \

if([obj respondstoselector:sel]) \

[[nsnotificationcenter defaultcenter] addobserver:obj \

selector:sel \

name:notif_name \

object:nil \

驗證是不是表情

#define kchat_string_emojiregex @"\\[[a-za-z0-9\\u4e00-\\u9fa5]+\\]"

下面的巨集定義方法在sdwebimage中定義

不在主線程執行block

#define dispatch_main_sync_safe(block)\

if ([nsthread ismainthread]) else else {\

dispatch_async(dispatch_get_main_queue(), block);\

巨集定義和巨集編譯

以下是巨集定義的一些用法11.4.2 if defined else endif 此編譯指令為 ifdef else endif的等價編譯指令。其語法格式如下 if defined 常量表示式 段1 else 段2 endif 或 if defined 常量表示式 段1 else 段2 endif ...

C語言巨集定義和巨集定義函式

c語言巨集定義和巨集定義函式 巨集定義可以幫助我們防止出錯,提高 的可移植性和可讀性等。在軟體開發過程中,經常有一些常用或者通用的功能或者 段,這些功能既可以寫成函式,也可以封裝成為巨集定義。那麼究竟是用函式好,還是巨集定義好?這就要求我們對二者進行合理的取捨。我們來看乙個例子,比較兩個數或者表示式...

巨集定義與巨集替換

一.c c 語言中使用巨集的主要目的主要有 3 個 1.提高 的可讀性 把用到的常量定義成有意義的名字 2.無需函式呼叫,執行效率高 對於一些簡單的操作,無需呼叫函式,雖然程式設計是強調模組化,但是函式呼叫時,需要保護現場和恢復現場。這些都需要耗時。對於複雜的操作來講,這些耗時可以不計,但是對於簡單...