iOS OC內聯函式 inline

2021-10-06 22:52:59 字數 761 閱讀 9353

在ios中的一些框架中,static inline是經常出現的關鍵字組合.

static inline cgsize yytextclipcgsize(cgsize size) 

static inline uiedgeinsets uiedgeinsetrotatevertical(uiedgeinsets insets)

雖然static inline修飾的是函式(或者方法,swift出來後,我覺著方法==函式,朋友們不用咬文嚼字,鄙視我輩了).但它在這裡就是巨集的作用,即你可以將cgfloatfrompixel當作乙個巨集.

當然inline函式與巨集有區別,inline可以:

函式之間呼叫,是記憶體位址之間的呼叫,當函式呼叫完畢之後還會返回原來函式執行的位址。函式呼叫有時間開銷,內聯函式就是為了解決這一問題。

為什麼inline能取代巨集?

inline函式避免了普通函式的在彙編時必須呼叫call的缺點:取消了函式的引數壓棧減少了呼叫的開銷,提高效率.所以執行速度確比一般函式的執行速度要快.

iOS OC內聯函式 inline的詳解

在ios中的一些框架中,static inline是經常出現的關鍵字組合.static inline cgfloat cgfloatfrompixel cgfloat value yyscreenscale 方法說明 cgfloat yyscreenscale return scale 雖然stat...

inline 內聯函式

一 inline關鍵字用來定義乙個類的內聯函式,引入它的主要原因是用它替代c中表示式形式的巨集定義。表示式形式的巨集定義一例 define expressionname var1,var2 var1 var2 var1 var2 為什麼要取代這種形式呢,且聽我道來 1 首先談一下在c中使用這種形式巨...

inline內聯函式

技術類筆試題50 都會問巨集與inline的區別,自己去找找看?1 巨集替換發生在預編譯 2 巨集函式 如果可以這麼叫的話 替換時不會檢查引數,inline函式會檢查 3 巨集一定會發生替換,inline貌似不是強制的,編譯器想不替換也沒關係 4 巨集替換時存在著一些不可避免的陷阱 參見c trap...