在ios中的一些框架中,static inline是經常出現的關鍵字組合.
static inline cgsize yytextclipcgsize(cgsize size)
static inline uiedgeinsets uiedgeinsetrotatevertical(uiedgeinsets insets)
雖然static inline
修飾的是函式(或者方法,swift出來後,我覺著方法==函式,朋友們不用咬文嚼字,鄙視我輩了).但它在這裡就是巨集的作用,即你可以將cgfloatfrompixel
當作乙個巨集.
當然inline
函式與巨集有區別,inline
可以:
函式之間呼叫,是記憶體位址之間的呼叫,當函式呼叫完畢之後還會返回原來函式執行的位址。函式呼叫有時間開銷,內聯函式就是為了解決這一問題。
為什麼inline能取代巨集?
inline函式
避免了普通函式的在彙編時必須呼叫cal
l的缺點:取消了函式的引數壓棧,減少了呼叫的開銷,提高效率.所以執行速度確比一般函式的執行速度要快.
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...