內嵌函式
inline
關鍵字是一個函式指定名稱,它會指示編譯器將函式定義中的程式碼替代為函式呼叫的每個執行個體。
備註
內嵌程式碼替代僅由編譯器自行決定是否進行。 例如,如果函式的位址已被佔用,或函式太大無法內嵌,則編譯器不會內嵌函式。 當編譯器未內嵌標頭檔中定義的函式時,它會被標記給連結器以避免違反單一定義規則 (ODR)。
對於要被視為內嵌候選項的函式,它必須使用具有宣告傳回類型和任何參數類型的簽章的新樣式函式定義。
請使用以下格式指定內嵌函式:
inline
function-definition
內嵌函式產生的程式碼比等效函式呼叫更快,有時甚至更小:
內嵌函式可節省為引數和傳回值準備堆疊所需的時間,以及執行函式呼叫的跳躍和傳回的時間。
即使重複數次,可能三行或更少的小型內嵌函式建立的程式碼也比等效函式呼叫少,因為編譯器不會產生處理引數和傳回值的程式碼。
編譯器可以透過一般函式無法使用的方式來最佳化內嵌產生的函式。 編譯器通常不會在不同的程序之間執行最佳化。
不要將使用 inline
的函式與內嵌組合語言程式碼混淆。 如需內嵌組合語言的詳細資訊,請參閱內嵌組合語言。
Microsoft 特定的
Microsoft 也支援 __inline
和 __forceinline
關鍵字,以指示編譯器為函式呼叫的每個執行個體替代函式定義中的程式碼。 __inline
關鍵字是 inline
的同義字。 __forceinline
關鍵字會指示編譯器放寬是否內嵌函式的啟發學習法,但它不能保證函式會被內嵌。
為了與舊版相容,除非指定了編譯器選項 /Za
(停用語言延伸模組),否則 _inline
和 _forceinline
是 __inline
和 __forceinline
的同義字。
結束 Microsoft 特定的