定義:
行內函數從原始碼層看,有函式的結構,而在編譯後,卻不具備函式的性質。行內函數不是在呼叫時發生控制轉移,而是在編譯時將函式體嵌入在每一個呼叫處。編譯時,類似宏替換,使用函式體替換呼叫處的函式名。一般在程式碼中用inline修飾,但是能否形成行內函數,需要看編譯器對該函式定義的具體處理。
簡介:
“一個函式宣告[。。。]說明符宣告一個內聯與行內函數。內聯說明符指示的實現,行內函數體替代了在呼叫點是首選通常的函式呼叫機制。一個實現不要求在呼叫執行此點內聯替代,但是,即使這個內嵌替代省略,由7.1.2行內函數定義的其他規則,仍應得到尊重“。
注意事項:
行內函數具有一般函式的特性,它與一般函式所不同之處只在於函式呼叫的處理。一般函式進行呼叫時,要將程式執行權轉到被呼叫函式中,然後再返回到呼叫它的函式中;而行內函數在呼叫時,是將呼叫表示式用行內函數體來替換。在使用行內函數時,應注意如下幾點:
在行內函數內不允許用迴圈語句和開關語句。 如果行內函數有這些語句,則編譯將該函式視同普通函式那樣產生函式呼叫程式碼,遞迴函式(自己呼叫自己的函式)是不能被用來做行內函數的。行內函數只適合於只有1~5行的小函式。對一個含有許多語句的大函式,函式呼叫和返回的開銷相對來說微不足道,所以也沒有必要用行內函數實現。
行內函數的定義必須出現在行內函數第一次被呼叫之前。
本欄目講到的類結構中所有在類說明內部定義的函式是行內函數。
定義:
行內函數從原始碼層看,有函式的結構,而在編譯後,卻不具備函式的性質。行內函數不是在呼叫時發生控制轉移,而是在編譯時將函式體嵌入在每一個呼叫處。編譯時,類似宏替換,使用函式體替換呼叫處的函式名。一般在程式碼中用inline修飾,但是能否形成行內函數,需要看編譯器對該函式定義的具體處理。
簡介:
“一個函式宣告[。。。]說明符宣告一個內聯與行內函數。內聯說明符指示的實現,行內函數體替代了在呼叫點是首選通常的函式呼叫機制。一個實現不要求在呼叫執行此點內聯替代,但是,即使這個內嵌替代省略,由7.1.2行內函數定義的其他規則,仍應得到尊重“。
注意事項:
行內函數具有一般函式的特性,它與一般函式所不同之處只在於函式呼叫的處理。一般函式進行呼叫時,要將程式執行權轉到被呼叫函式中,然後再返回到呼叫它的函式中;而行內函數在呼叫時,是將呼叫表示式用行內函數體來替換。在使用行內函數時,應注意如下幾點:
在行內函數內不允許用迴圈語句和開關語句。 如果行內函數有這些語句,則編譯將該函式視同普通函式那樣產生函式呼叫程式碼,遞迴函式(自己呼叫自己的函式)是不能被用來做行內函數的。行內函數只適合於只有1~5行的小函式。對一個含有許多語句的大函式,函式呼叫和返回的開銷相對來說微不足道,所以也沒有必要用行內函數實現。
行內函數的定義必須出現在行內函數第一次被呼叫之前。
本欄目講到的類結構中所有在類說明內部定義的函式是行內函數。