內聯函數


內聯函數的作用

作用:不是在調用時發生控制轉移,而是在編譯時將函數體嵌入在每一個調用處,適用於功能簡單,規模較小又使用頻繁的函數。遞歸函數無法內聯處理,內聯函數不能有循環體,switch語句,不能進行異常接口聲明。

主要體現在於inline關鍵字

內聯是以代碼膨脹(復制)為代價,僅僅省去了函數調用的開銷,從而提高函數的執行效率。如果執行函數體內代碼的時間,相比於函數調用的開銷較大,那么效率的收

獲會很少。另一方面,每一處內聯函數的調用都要復制代碼,將使程序的總代碼量增大,消耗更多的內存空間。

內聯函數和宏定義的區別

       內聯函數和宏的區別在於,宏是由預處理器對宏進行替代,而內聯函數是通過編譯器控制來實現的。而且內聯函數是真正的函數,只是在需要用到的時候,內聯函數像宏一樣的展開,所以取消了函數的參數壓棧,減少了調用的開銷。你可以象調用函數一樣來調用內聯函數,而不必擔心會產生於處理宏的一些問題。內聯函數與帶參數的宏定義進行下比較,它們的代碼效率是一樣,但是內聯歡函數要優於宏定義,因為內聯函數遵循的類型和作用域規則,它與一般函數更相近,在一些編譯器中,一旦關聯上內聯擴展,將與一般函數一樣進行調用,比較方便。 

       另外,宏定義在使用時只是簡單的文本替換,並沒有做嚴格的參數檢查,也就不能享受C++編譯器嚴格類型檢查的好處,另外它的返回值也不能被強制轉換為可轉換的合適的類型,這樣,它的使用就存在着一系列的隱患和局限性。

使用注意事項

 1.內聯函數不能包括復雜的控制語句,如循環語句和switch語句;

  2.內聯函數不能包括復雜的控制語句,如循環語句和switch語句;

  3.只將規模很小(一般5個語句一下)而使用頻繁的函數聲明為內聯函數。在函數規模很小的情況下,函數調用的時間開銷可能相當於甚至超過執行函數本身的時間,把它定義為內聯函數,可大大減少程序運行時間。

參考鏈接:

【1】https://www.cnblogs.com/chenwx-jay/p/inline_cpp.html

【2】https://www.cnblogs.com/spock12345/p/11551147.html

【3】https://blog.csdn.net/cpongo3/article/details/93996094


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM