inline函數

爲何要使用inline函數?函數

對於頻繁被調用的小函數來講,每次調用都要保存當前寄存器,傳遞參數,以及結果後恢復以前的狀態須要必定的開銷。若是將其聲明爲inline,則在調用處會直接對其展開,因爲函數較小,因此並不會對生成的二進制文件太大。優化

 

將函數返回類型加上關鍵字inline就將函數指定爲inline函數了,可是這只是對編譯器的一個建議,編譯器能夠不接受這個建議,通常來講,內聯機制只適用於優化小的、只有幾行的並且常常被調用的函數。大多數編譯器都不支持遞歸函數的內聯。遞歸

 

內聯函數應該在頭文件中定義,這一點與其它函數不一樣。接口

內聯函數的定義對編譯器而言必須是可見的,以便編譯器可以在調用點內聯地展開該函數的代碼,因此,僅有函數原型是不夠的。調用函數在展開時必需要知道函數定義的狀況下才能展開,僅僅只給調用者提供一個接口是不行的,因此選擇將定義也放在頭文件中。原型

相關文章
相關標籤/搜索