c 內聯函式inline

2021-08-09 12:15:10 字數 963 閱讀 8980

1. inline原理

在程式編譯時,編譯器將程式中出現的內聯函式的呼叫表示式用內聯函式的函式體來進行替代。採用空間換時間的策略。是以**膨脹(複製)為代價,僅僅省去了函式呼叫的開銷,從而提高函式的執行效率。

例如:如果乙個函式被指定為inline函式,則它將在程式中每個呼叫點上被展開。

int i=10;

int j=100;

inline int min(int i,int j) 

int min = min(i,j);在編譯時被展開為 int min = i < j ? i : j;

函式的額外執行開銷被消除,函式體所需儲存記憶體資源增加。

2. 內聯函式inline的使用

隱式inline在類裡定義函式,顯式的則是在函式前加上inline關鍵字。

3. 注意事項

如果執行函式體內**的時間,相比於函式呼叫的開銷較大,那麼效率的收穫會很少。所以,

如果函式體**過長或者函式體重有迴圈語句,if語句或switch語句或遞迴時,不宜用內聯。

關鍵字inline 必須與函式定義體放在一起才能使函式成為內聯,僅將inline放在函式宣告前面不起任何作用。

內聯函式呼叫前必須宣告。

inline 是一種「用於實現的關鍵字」,而不是一種「用於宣告的關鍵字」。

只在定義前加上inline,而不是在宣告和定義前都加,因為這能體現高質量c++/c程式設計風格的乙個基本原則:宣告與定義不可混為一談。

例如:class a

// 定義檔案

inline void a::foo(int x, int y){}

4. 總結

可以將內聯理解為c++中對於函式專有的巨集,對於c的函式巨集的一種改進。

對於常量巨集,c++提供const替代;而對於函式巨集,c++提供的方案則是inline。

通過內聯機制,既具備巨集**的效率,又增加了安全性,還可以自由操作類的資料成員,算是乙個比較完美的解決方案。

inline函式 C 內聯函式 inline

inline要起作用,必須要與函式定義放在一起,而不是函式的宣告 inline 當編譯器處理呼叫內聯函式的語句時,不會將該語句編譯成函式呼叫的指令,而是直接將整個函式體的 插人呼叫語句處,就像整個函式體在呼叫處被重寫了一遍一樣,在執行時是順序執行,而不會進行跳轉。優點 內聯函式沒有執行函式呼叫的開銷...

C 內聯函式 inline

巨集 就是使用乙個字串來代替乙個表示式 或函式呼叫 編譯之前,預處理器會使用這個巨集字串所代表的表示式 或函式呼叫 來替換所有出現的巨集字串,這樣的話,用巨集表示的函式呼叫 就不用另外開闢函式棧,不用保護和恢復函式呼叫現場,這樣就提高了 的執行效率 所以,呼叫乙個巨集比呼叫乙個函式更有效 但是呼叫巨...

C 內聯inline函式

內聯inline函式 在c中保持效率的一種方法是使用巨集,他的行為類似於函式呼叫但卻沒有呼叫的開銷 like a function call without the normal function call overhead.巨集是由由預處理器preprocessor而非編譯器compiler處理的...