內聯函數和宏函數的一些區別


懶得寫了,直接放上答案鏈接吧

宏和內聯函數的意義

相比普通函數,內聯函數效率更高,其主要原因為內聯函數不需要中斷調用,通過復制代碼節省了函數調用的時間。

從內聯函數的實現我們可以看出,其僅僅節省了函數調用的時間,若本身內聯的函數耗時就長,節省這么一點調用時間並不會有太大的提升,而且函數本身復雜,相應最終可執行文件的大小增量卻比較大,因此內聯函數不應過大,主要用於以下幾種情況:
1)一個函數不斷被重復調用
2)函數簡單,不包含for、while、switch等語句。

實現時需要注意:
1、關鍵字inline必須與函數定義體放在一起才能使函數成為內聯,僅將inline放在函數聲明前不起任何作用。
2、內聯函數應該在頭文件中定義。可以確保在調用函數時所使用的定義是相同的,並保證在調用點該函數的定義對編譯器是可見的。

宏與內聯函數的對比:
1、內聯函數相比較於宏而言,內聯函數要做參數類型檢查,從而內聯函數相比宏而言更加安全。
2、內聯函數在運行時可調試,而宏定義不可以。

 


免責聲明!

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



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