內聯函式(inline)

2021-07-25 08:17:24 字數 811 閱讀 4315

c語言中內聯函式到底有什麼作用?

試想一下,每當我們在假設就在主函式中呼叫另外乙個函式的時候,那麼這個函式就要入棧或者出棧,比如說下面的乙個例子:

void myprint(

)void main()

在主函式中呼叫myprin()

函式列印

2這個數字,那麼我們就要呼叫函式

100次,意味著這個函式要進棧

100次,出棧

100次,這樣一來我們就列印乙個小小的

2就把大量的時間花費在進棧和出棧之上了,當我們把程式改為如下所示的時候呢:

void main()}

此時相當於

static inline void myprint(

int n)

;static inline void myprint(int n)

void main()

此時我們就不需要進棧出棧了,直接列印2

就可以了,當然無論任何事,得到了一定的方便之後就必須得付出一定的代價,即此時的空間的問題。打個比方,現在我們要去乙個超市買東西,而超市距離我們家有好幾里路,此時你要話費一定的時間在去超市的路上,可是現在呢超市已經搬到家裡了,我們就沒有必要去超市了,因為超市已經在家裡了,當然你的家有那麼大?能容得下乙個超市?所以此時就存在乙個空間的問題,即你必須擴大你家,才能夠容納的下乙個超市。

對於記憶體來說也是一樣的,減少了對棧的進出時間的開銷,我們卻擴大了主存的空間來容納本來在棧裡的函式,在c

語言中實現這一功能是用內聯函式

inline

來實現的。

這就是inline

函式的作用!

inline 內聯函式

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

inline內聯函式

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

inline內聯函式

一 內聯函式 內聯函式是指用inline關鍵字修飾的函式 它與普通函式所不同之處只在於函式呼叫的處理。普通 函式進行呼叫時,要將程式執行權轉到被呼叫函式中,然後再返回到呼叫它的函式中 內聯函式不是在呼叫時發生執行權轉移,而是在編譯時將 函式 體 嵌入在每乙個呼叫處。編譯時類似巨集替換,使用 函式體替...