1. 程式人生 > >C++內聯(inline)函式

C++內聯(inline)函式

        行內函數的格式:inline 返回值型別  函式名(引數)  如:inline void display(int r);

一、為什麼要用行內函數         在執行程式過程中如果要進行函式呼叫,系統系統要將程式當前的一些狀態資訊存到棧中,之後進行虛實結合,同時轉到函式的程式碼處去執行函式體的語句,這些引數儲存與傳遞的過程中需要時間和空間的開銷,是的程式執行效率降低,特別是在程式頻繁地進行函式呼叫以及函式發i嗎段語句較少時,這個問題會變得更加嚴重。為解決這個問題,C++引入了行內函數機制。 二、行內函數原理
        編譯器將編譯後的全部行內函數的目標機器程式碼賦值到程式內所有的引用位置並把往返的資料也都融合進引用位置的計算當中,用來避免函式呼叫機制所帶來的開銷,從而提高程式的執行效率。簡而言之,行內函數就是一種“以空間換時間”的措施。         需要注意的是,若行內函數較長,且是被頻繁呼叫時,程式將被加長很多。因此,通常只有較短的函式才定義為行內函數,對於較長的被頻繁呼叫的函式最好作為一般函式處理。 三、行內函數的限制
(1)不能有遞迴; (2)不能包含靜態資料; (3)不能包含迴圈; (4)不能包含switch和goto語句; (5)不能包含陣列; 若一個行內函數定義不滿足上述限制,則編譯系統把它當作普通函式處理。