內聯函式是指用inline關鍵字修飾的函式。在類內定義的函式被預設成內聯函式。內聯函式從源**層看,有函式的結構,而在編譯後,卻不具備函式的性質。
內聯函式不是在呼叫時發生控制轉移,而是在編譯時將函式體嵌入在每乙個呼叫處。編譯時,類似巨集替換,使用函式體替換呼叫處的函式名。一般在**中用inline修飾,但是能否形成內聯函式,需要看編譯器對該函式定義的具體處理。
1、內聯函式,編譯器將會根據上下文環境進一步深度優化**,而這一點是普通函式無法達到的作用
2、省略了函式呼叫壓入堆疊和彈出堆疊所用的時間
3、常用於高頻使用的函式,可以提高時間
1、編譯之後**量會偏多,內聯可以說是一種以空間換取時間的方法。犧牲一定的空間來加速執行時間。增加的**量取決於函式呼叫次數和函式本身的大小
2、內聯函式實現的更改往往並不可以保持鏈結相容性,也就是說這樣的更改需要使用者重新編譯他們的**
1、inline實現其實就是對編譯器的一種請求,因此編譯器完全有權利取消乙個函式的內聯請求。乙個好的編譯器會根據函式定義體,自動取消不值得的內聯,一般編譯器會自動過濾選擇一些短小而簡單的函式來內聯
2、使用內聯函式的時候要注意:
(1)遞迴函式不能定義為內聯函式
(2)內聯函式一般適合於不存在while和switch等複雜的結構且只有1~5條語句的小函式上,否則編譯系統將該函式視為普通函式。
(3)內聯函式只能先定義後使用,否則編譯系統也會把它認為是普通函式。
(4)對內聯函式不能進行異常的介面宣告。
內聯函式的優缺點
內聯函式的優缺點 說明 內聯函式發生在程式的編譯期間,多對於重複利用,程式執行又比較簡短的,大大增大 執行 效率。優點 1 inline定義的內聯函式,函式 被放入符號表中,在使用時進行替換 像巨集一樣展開 效率很高 2 類的內聯函式也是函式。編繹器在呼叫乙個內聯函式,首先會檢查引數問題,保證呼叫正...
內聯 inline 函式的優缺點
最近在看linuxkernel development,這本書主要是講了linux核心的概念,對於整體的框架有了乙個描述,這裡記錄下看到的一些有用的東西,便於以後整理。inline這個名稱就可以反映出它的工作方式,函式會在它所呼叫的位置上展開。這麼做可以消除函式呼叫和返回所帶來的開銷 暫存器儲存和恢...
C 中巨集與內聯函式的優缺點
巨集 為什麼要使用巨集呢?因為函式的呼叫必須要將程式執行的順序轉移到函式所存放在記憶體中的某個位址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。這種轉移操作要求在轉去執行前要儲存現場並記憶執行的位址,轉回後要恢復現場,並按原來儲存位址繼續執行。因此,函式呼叫要有一定的時間和空間方面的開...