內聯函式:
1、對inline函式的處理發生在編譯階段,在呼叫點,把函式的**直接展開,省去了函式棧幀的開銷,**執行效率高
2、會進行型別檢查(編譯階段),比巨集更安全
3、inline只在release版本下才生效,即在debug版本下,inline和普通函式一樣,也有棧幀的開闢和回退
4、debug下,可以進行除錯
巨集:
1、預編譯階段處理的,純粹是字元替換
2、沒有任何的型別檢查,十分的不安全
3、用巨集來代替函式定義,替換後還是乙個正常的函式呼叫,有函式呼叫開銷
4、**無法除錯
5、大量的巨集很不方便去閱讀**,inline函式和普通函式一樣,結構模組化清晰,方便閱讀**
inline函式和普通函式的區別:
inline:沒有標準的函式棧幀的開闢與回退
普通函式有函式棧幀的開闢與回退
static:
相同:作用域相同,都是當前檔案可使用
1、呼叫static函式時,有標準的函式棧幀的開闢與回退,inline則沒有
2、符號的產生:
static函式會產生local的符號;inline不產生符號;普通函式產生global的符號
內聯函式 普通函式 巨集定義
對於乙個頻繁使用的短小函式,c用巨集定義,c 用inline實現。一 巨集定義和內聯函式 內聯函式和普通函式的區別 1 巨集定義只是普通的文字替換,巨集定義是沒有型別檢查的,無論對還是錯都是直接替換。所以巨集替換容易出錯,直接替換會產生符號的優先順序的問題會一些意想不到的結果。內聯函式在編譯的時候會...
巨集函式 內聯函式 普通函式的區別
剛剛面世完,上來就問巨集函式和普通函式的區別,整理一下 本文為本人的第一篇部落格,各位大蝦多多指點 巨集函式 在c語言中用的比較多,c 中用的比較少,巨集函式只是在預編譯階段做簡單的替換,所以不會為函式呼叫帶來額外的開銷 不必開闢一段棧空間 沒了這種開銷,就可以提高 執行的效率。但是僅僅簡單的替換也...
巨集定義函式 普通函式 內聯函式區別
巨集定義函式 例子 單行 define max a,b a b a b 多行 define malloc n,type type malloc n sizeof type 對於第乙個函式,如果用普通函式,該怎樣寫?int max int a,int b 很顯然,我們不會選擇用函式來完成這個任務,原因...