C inline關鍵字和內聯函式

2022-06-13 05:27:14 字數 698 閱讀 8477

作用:避免頻繁呼叫函式對棧記憶體重複開闢所帶來的消耗。

在 c/c++ 中,為了解決一些頻繁呼叫的小函式大量消耗棧空間(棧記憶體)的問題,特別的引入了 inline 修飾符,表示為內聯函式。

棧空間就是指放置程式的區域性資料(也就是函式內資料)的記憶體空間。

在系統下,棧空間是有限的,假如頻繁大量的使用就會造成因棧空間不足而導致程式出錯的問題,如,函式的死迴圈遞迴呼叫的最終結果就是導致棧記憶體空間枯竭。

c++內聯函式是通常與類一起使用。如果乙個函式是內聯的,那麼在編譯時,編譯器會把該函式的**副本放置在每個呼叫該函式的地方。

對內聯函式進行任何修改,都需要重新編譯函式的所有客戶端,因為編譯器需要重新更換一次所有的**,否則將會繼續使用舊的函式。

如果想把乙個函式定義為內聯函式,則需要在函式名前面放置關鍵字 inline,在呼叫函式之前需要對函式進行定義。

在內聯函式內不允許使用迴圈語句和開關語句,並且不能內聯函式本身不能是直接遞迴函式;

內聯函式的定義必須出現在內聯函式第一次呼叫之前;

類結構中所在的類說明內部定義的函式是內聯函式。

inline僅是乙個對編譯器的建議;

建議 inline 函式的定義放在標頭檔案中;

關鍵字 inline 必須與函式定義體放在一起才能使函式成為內聯,僅將 inline 放在函式宣告前面不起任何作用;

慎用inline關鍵字。

inline關鍵字和內聯函式

在大多數的機器上,呼叫函式都要做很多任務作 呼叫前要先儲存暫存器,並在返回時恢復 複製實參 程式還必須轉向乙個新位置執行。一言以蔽之 inline 函式避免函式呼叫的開銷。將函式指定為 inline 函式,通常 就是將它在程式中每個呼叫點上 內聯地 展開,這個過程發生在編譯期 正因為如此,也就不會有...

C inline 內聯函式

內聯函式 1 內聯函式定義和作用 將乙個函式宣告為inline,那麼函式就成為內聯函式。內聯函式通常就是它在程式中每個呼叫點上 內聯地 展開。從定義上看,內聯函式跟一般函式不一樣,一般函式呼叫的時候是需要呼叫開銷的 比如出棧入棧等操作 內聯函式從定義上看更像是巨集,但是跟巨集不一樣。內聯函式的作用主...

C 內聯函式 auto關鍵字

以inline修飾的函式叫做內聯函式,編譯時c 編譯器會在呼叫內聯函式的地方展開,沒有函式壓棧的開銷,內聯函式提公升程式執行的效率。特性 c 11中,auto作為乙個新的型別指示符來指示編譯器,auto宣告的變數必須由編譯器在編譯時期推導而得 注 例 int testauto int main au...