內聯函數

引入內聯函數的目的是爲了解決程序中函數調用的效率問題。 

函數是一種更高級的抽象。它的引入使得編程者只關心函數的功能使用方法,而沒必要關心函數功能的具體實現;函數的引入能夠減小程序的目標代碼,實現程序代碼和數據的共享。可是,函數調用也會帶來下降效率的問題,由於調用函數實際上將程序執行順序轉移到函數所存放在內存中某個地址,將函數的程序內容執行完後,再返回到轉去執行該函數前的地方。這種轉移操做要求在轉去前要保護現場並記憶執行的地址,轉回後先要恢復現場,並按原來保存地址繼續執行。所以,函數調用要有必定的時間和空間方面的開銷,因而將影響其效率。特別是對於一些函數體代碼不是很大,但又頻繁地被調用的函數來說,解決其效率問題更爲重要。引入內聯函數實際上就是爲了解決這一問題。 編程

在程序編譯時,編譯器將程序中出現的內聯函數的調用表達式用內聯函數的函數體來進行替換。顯然,這種作法不會產生轉去轉回的問題,可是因爲在編譯時將函數休中的代碼被替代到程序中,所以會增長目標程序代碼量,進而增長空間開銷,而在時間代銷上不象函數調用時那麼大,可見它是以目標代碼的增長爲代價來換取時間的節省。 

內聯函數的定義方法 

定義內聯函數的方法很簡單,只要在函數定義的頭前加上關鍵字inline便可。內聯函數的定義方法與通常函數同樣。如: 

inline int add_int (int x, int y, int z) 


return x+y+z; 




在程序中,調用其函數時,該函數在編譯時被替代,而不是像通常函數那樣是在運行時被調用。 

使用內聯函數應注意的事項 

內聯函數具備通常函數的特性,它與通常函數所不一樣之處公在於函數調用的處理。通常函數進行調用時,要將程序執行權轉到被調用函數中,而後再返回到調用它的函數中;而內聯函數在調用時,是將調用表達式用內聯函數體來替換。在使用內聯函數時,應注意以下幾點: 

1.在內聯函數內不容許用循環語句和開關語句。 

2.內聯函數的定義必須出如今內聯函數第一次被調用以前。 

3.本欄目講到的類結構中全部在類說明內部定義的函數是內聯函數。
函數

相關文章
相關標籤/搜索