C 的內聯函式

2021-09-03 08:08:46 字數 768 閱讀 7318

內聯函式是一種特殊的函式,具有函式的普通特徵(引數檢查,返回型別等)

要使用內聯函式,必須採取以下措施之一:

1、在函式宣告前加上關鍵字 inline

2、在函式定義前加上關鍵字inline

內聯函式的限制:

不能對函式進行取址操作、內聯函式不能遞迴

內聯函式和普通函式的區別:

1、內聯函式和常規函式的區別不在於編寫方式(除了要多使用乙個關鍵字進行區分),而在與c++編譯器將他們組合到程式中的方式。

2、內聯函式在最終生成的**中時沒有定義的,在使用時,編譯器直接將函式體插入到函式呼叫的地方,沒有普通函式呼叫時的額外開銷(壓棧,跳轉,返回)

3、內聯函式相對於普通函式的優勢只是省去了呼叫函式時候的開銷。因此,當函式體執行的開銷遠大於呼叫的開銷時,內聯函式將無意義。(比如,乙個有100行**的函式體,在程式中總共呼叫了20次。使用內聯函式的話,執行時就需要將100行**複製20遍,很明顯這樣做是沒有意義的)

內聯函式和巨集**片段的區別:

內聯函式由編譯器處理,直接將編譯後的函式體插入到呼叫的地方。(巨集**片段由預處理器處理,進行簡單的文字替換,沒有任何編譯過程) 

內聯函式最終只是給編譯器的乙個請求,編譯器可以拒絕內聯請求,具體的情況會因為編譯器的編譯規則不同而略有差異。但是,現在編譯器已經越來越智慧型,很多編譯器都會有自己的編譯優化規則(也可能沒有自動優化),這個自動優化不會影響程式執行的結果,所以內聯函式的使用視具體的情況而定。

c 的內聯函式

1 什麼是內聯函式?2 為什麼要引入內聯函式?3 為什麼inline能取代巨集?4 內聯函式和巨集的區別?5 什麼時候用內聯函式?6 如何使用內聯函式?7 內聯函式的優缺點?8 如何禁止函式進行內聯?9 注意事項 1 什麼是內聯函式?內聯函式是指那些定義在類體內的成員函式,即該函式的函式體放在類體內...

C 的內聯函式

影響效能的乙個重要因素是內聯技巧,內聯函式也可以叫內嵌函式。在c 中,函式呼叫需要建立棧環境,進行引數複製,保戶呼叫現場,返回時,還要進行返回值複製,恢復呼叫現場。這些工作都是與完成特定的任務操作無關的額外開銷。程式效率由於該項工作而受到影響,所以,流行的cpu都已經將函式呼叫的額外開銷硬體化了,以...

c 的內聯函式

一 內聯函式的利弊 利 1 不需要蒙受函式呼叫所帶來的額外開銷。2 編譯器最優化機制通常被設計用來濃縮那些 不含函式呼叫 的 當inline某個函式時,編譯器就可以對它執行語境相關最優化。弊 1 inline函式的整體觀念是,將 對函式的每一次呼叫 都以函式本體替換之,這樣會增加目標碼大小。2 in...