懶得寫了,直接放上答案鏈接吧
相比普通函數,內聯函數效率更高,其主要原因為內聯函數不需要中斷調用,通過復制代碼節省了函數調用的時間。
從內聯函數的實現我們可以看出,其僅僅節省了函數調用的時間,若本身內聯的函數耗時就長,節省這么一點調用時間並不會有太大的提升,而且函數本身復雜,相應最終可執行文件的大小增量卻比較大,因此內聯函數不應過大,主要用於以下幾種情況:
1)一個函數不斷被重復調用
2)函數簡單,不包含for、while、switch等語句。
實現時需要注意:
1、關鍵字inline必須與函數定義體放在一起才能使函數成為內聯,僅將inline放在函數聲明前不起任何作用。
2、內聯函數應該在頭文件中定義。可以確保在調用函數時所使用的定義是相同的,並保證在調用點該函數的定義對編譯器是可見的。
宏與內聯函數的對比:
1、內聯函數相比較於宏而言,內聯函數要做參數類型檢查,從而內聯函數相比宏而言更加安全。
2、內聯函數在運行時可調試,而宏定義不可以。