在說明內聯函式之前,我們需要先簡單介紹一下函式的執行過程。
我們寫的**最終會被編譯成可執行程式,這些程式是機器可以識別的機器語言,然後當我們執行程式時,這些**被載入到記憶體當中。
一般在呼叫函式時,函式呼叫後立即儲存該指令的記憶體位址,並把函式的引數拷貝到堆疊空間,然後程式跳轉到該函式起點的記憶體單元,執行函式**,將返回值放入暫存器中,然後跳回到剛才的儲存的指令位址處。就好比我們開古文的時候,有時需要看一眼註解,理解一下繼續讀文章,函式呼叫的過程與之類似,在這指令之間的跳轉過程中就會產生一定的開銷。
而我們今天的主角內斂函式呢,在程式編譯階段,需要呼叫該函式的地方,全部用該函式做了替代,就不同像常規函式一樣跳轉了,**走到這直接執行,但這帶來的弊端就是增大了記憶體開銷。
那我們什麼時候需要使用到內斂函式呢?
如果你的函式**執行時間非常短,那麼就可以使用,這樣可以減少函式跳轉使用的時間。
在具體使用的過程中,我們只需要增加inline關鍵字就好了。
給乙個簡單的例子:
#include using namespace std;
inline double square(double x)
int main()
內聯函式的定義及說明
一 什麼叫inline函式?inline 小心,不是online 翻譯成 內聯 或 內嵌 意指 當編譯器發現某段 在呼叫乙個內聯函式時,它不是去呼叫該函式,而是將該函式的 整段插入到當前位置。這樣做的好處是省去了呼叫的過程,加快程式執行速度。函式的呼叫過程,由於有前面所說的引數入棧等操作,所以總要多...
C 內聯函式的使用
對於乙個頻繁使用的短小函式,在c語言中用巨集實現,在c 中應用什麼實現?答案是 內聯函式 1 內聯函式的原理 編譯器將使用相應的函式 替換函式呼叫。例如,如果乙個函式被指定為inline 函式則它將在程式中每個呼叫點上被內聯地展開 int minval2 min i,j int minval2 i ...
c 內聯函式的使用
學過計算機基礎的人都知道,程式設計講究效率。plus 在c語言中,巨集定義是我們保護效率的一大妙招,巨集 處不加驗證的簡單替代,在編譯前將程式中有關字串替換成巨集體 如 defin pi 3.14,用3.14替換pi這個字元在程式執行前。但是在c 中,由於私有成員不能訪問,巨集作用為成員函式就很無用...