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

2021-07-11 23:32:06 字數 275 閱讀 2925

1.普通函式在編譯後會被放到**段,然後函式執行過程中呼叫普通函式是需要先壓棧,然後根據函式呼叫位址呼叫函式,函式返回後執行出棧操作。這樣就會存在乙個呼叫過程,有時間消耗。

2.內聯函式是**被插入到呼叫者**處的函式。如同 #define 巨集,內聯函式通過避免被呼叫的開銷來提高執行效率。

3.內聯函式和巨集很類似,而區別在於,巨集是由預處理器對巨集進行替代,而內聯函式是通過編譯器控制來實現的。而且內聯函式是真正的函式,只是在需要用到的時候,內聯函式像巨集一樣的展開,所以取消了函式的引數壓棧,減少了呼叫的開銷。

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

1.內聯函式和普通函式的引數傳遞機制相同,但是編譯器會在每處呼叫內聯函式的地方將內聯函式內容展開,這樣既避免了函式呼叫的開銷又沒有巨集機制的缺陷 2.普通函式在被呼叫的時候,系統首先要到函式的入口位址去執行函式體,執行完成之後再回到函式呼叫的地方繼續執行,函式始終只有乙個複製。內聯函式不需要定址,當...

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

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

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

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