2020 12 08 內聯函式inline

2021-10-11 16:22:01 字數 907 閱讀 9068

#include

intfunc

(void);

intmain

(void

)int

func()

上面這段**的執行過程是通過給pc指標賦值,從而入棧出棧等一系列過程,這裡先不細說,這裡主要想說明一下,為什麼寫**要分函式寫呢?

積極的原因有好多,其一是因為跑**的空間是有限的,如果所有**都放進main函式,那麼裡面所有的功能**,所有的可能只用一次的區域性變數,在程式從始至終都是存在的,如果這是乙個作業系統的**,別說在作業系統上跑軟體了,執行他自己估計都夠嗆,所以就有了函式的思想,乙個函式負責乙個功能塊,實現功能及釋放(區域性變數隨著函式塊結束隨之釋放),平時不呼叫也不會佔空間,但是就像上述的**塊的內容,好像又沒必要折騰pc指標跳來跳去,這也就引出了內聯函式。

注意:這個關鍵字只在定義它的時候用「inline」,宣告不用加inline

eg:

#include

intfunc

(void);

intmain

(void

)inline

intfunc()

這倆塊**執行完好像沒什麼差別,這是因為這個功能**還顯示不出它的效率,如果是乙個幾十萬行的程式,在簡單的**塊函式用inline定義,會提公升一定的效率,因為加了這個關鍵字的函式,就像#define一樣,是直接替換的,而不用執行入棧出棧這些步驟,但它只適合小的**塊,如果是複雜的**塊,相當於又把所有**放進了乙個函式,然並卵。

如果乙個函式要在一秒鐘呼叫幾千幾萬次,那麼就要經歷幾千幾萬次的儲存位址,進入函式,結束函式,恢復位址的操作,如果用了inline定義,它和define一樣是乙個替換,就會省略掉進入函式儲存位址,和結束函式恢復位址的過程,很大程度上優化了**的執行

mysql 內聯函式 Kotlin內聯函式

內聯函式使用關鍵字內聯宣告,內聯函式的使用增強了高階函式的效能。內聯函式告訴編譯器將引數和函式複製到呼叫站點。虛函式或區域性函式不能宣告為內聯。以下是內聯函式內部不支援的一些表示式和宣告 區域性類宣告 內部巢狀類的宣告 函式表示式 宣告區域性函式 區域性可選引數的預設值 讓我們看一下內聯函式的基本示...

函式之內聯函式

內聯函式 定義 內聯函式是c 為提高程式執行速度所進行的一項改進。常規函式與內聯函式之間的區別不在於編寫方式,而在於c 編譯器如何將他們組合到程式裡。c 函式的編譯 與其他程式的 內聯 了起來,也就是說,編譯器將使用相應的函式 代替函式呼叫。對於內聯函式,程式無需調到另乙個位置處執行 再跳回來,因此...

內聯函式 虛函式

在c 中,inline關鍵字和virtual關鍵字分別用來定義c 中的內聯函式和虛函式,他們在各自的場合都有其各自的應用,下面將簡單介紹他們各自的功能,然後在說明為什麼乙個函式不能同時是虛函式和內聯函式 inline 內聯函式的目的是為了減少函式呼叫時間。它是把內聯函式的函式體在編譯器預處理的時候替...