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

2021-08-28 05:31:19 字數 299 閱讀 3545

1. 內聯函式和普通函式的引數傳遞機制相同,但是編譯器會在每處呼叫內聯函式的地方將內聯函式內容展開,這樣既避免了函式呼叫的開銷又沒有巨集機制的缺陷

2. 普通函式在被呼叫的時候,系統首先要到函式的入口位址去執行函式體,執行完成之後再回到函式呼叫的地方繼續執行,函式始終只有乙個複製。

內聯函式不需要定址,當執行到內聯函式的時候,將此函式展開,如果程式中有n次呼叫了內聯函式則會有n次展開函式**

3. 內聯函式有一定的限制,內聯函式體要求**簡單,不能包含複雜的結構控制語句。如果內聯函式函式體過於複雜,編譯器將自動把內聯函式當成普通函式來執行

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

1.普通函式在編譯後會被放到 段,然後函式執行過程中呼叫普通函式是需要先壓棧,然後根據函式呼叫位址呼叫函式,函式返回後執行出棧操作。這樣就會存在乙個呼叫過程,有時間消耗。2.內聯函式是 被插入到呼叫者 處的函式。如同 define 巨集,內聯函式通過避免被呼叫的開銷來提高執行效率。3.內聯函式和巨集...

巨集函式 內聯函式 普通函式的區別

剛剛面世完,上來就問巨集函式和普通函式的區別,整理一下 本文為本人的第一篇部落格,各位大蝦多多指點 巨集函式 在c語言中用的比較多,c 中用的比較少,巨集函式只是在預編譯階段做簡單的替換,所以不會為函式呼叫帶來額外的開銷 不必開闢一段棧空間 沒了這種開銷,就可以提高 執行的效率。但是僅僅簡單的替換也...

內聯函式和巨集 普通函式 static的區別

內聯函式 1 對inline函式的處理發生在編譯階段,在呼叫點,把函式的 直接展開,省去了函式棧幀的開銷,執行效率高 2 會進行型別檢查 編譯階段 比巨集更安全 3 inline只在release版本下才生效,即在debug版本下,inline和普通函式一樣,也有棧幀的開闢和回退 4 debug下,...