C 中 inline函式的來龍去脈

2021-06-29 16:10:51 字數 624 閱讀 4975

c語言是一種較為高效快捷的語言,保持其效率的一種方法就是使用巨集定義(marco),巨集的實現使用的是預處理器而不是編譯器,預處理器直接使用巨集**代替巨集呼叫,因此,省去了引數壓棧、生成彙編的call、返回引數、執行彙編的return等開銷,減少了編譯器的呼叫,節省了時間。

在c++中,預處理器不允許訪問類(class)的成員函式,因此不能用巨集來定義類的成員函式,由此引出內聯函式(inline function),inline既保持預處理器巨集的效率又增加了安全性,還能像一般成員函式一樣在class裡面訪問自如。

簡單總結一句話,inline函式的使用是用空間開銷換時間開銷。

inline函式的使用情況:

1. 在類中定義:當函式只有一行時,並直接返回引數時,在類中直接定義,不需要用inline修飾,編譯器自動化為內聯函式

class student  //inline function

};

2. 在類外定義:函式在類中宣告,在類外定義

class student ;

inline int student::getgrade()

inline函式在使用時應該注意:

C 中的inline函式

在函式名字前面加上inline,該函式就被宣告為內建函式。每當程式中出現對該函式的呼叫時,c 編譯器使用函式體中的代 碼插入到呼叫該函式的語句之處,而不是將流程轉出去,同時用實參代替形參,以便在程式執行時不再進行函式呼叫。引入內建函式的目的就是 消除函式呼叫時系統開銷,以提高執行速度。減少程式執行過...

C 中的inline函式

1 inline函式的處理流程 在函式的呼叫點直接進行 的替換。2 inline函式和普通函式的區別 1 普通函式有函式的堆疊和清棧。2 inline函式由於 的直接展開,所以沒有堆疊和清棧,效率會更高。3 inline函式和巨集的區別 1 巨集在預編譯階段,沒有型別和安全檢查。2 inline函式...

C 中的inLine函式

一 inline函式 摘自c primer的第三版 在函式宣告或定義中函式返回型別前加上關鍵字inline即把min 指定為內聯。inline int min int first,int secend inline 函式對編譯器而言必須是可見的,以便它能夠在呼叫點內展開該函式。與非inline函式不...