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

2021-08-22 06:20:57 字數 673 閱讀 6739

內聯函式:

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 很顯然,我們不會選擇用函式來完成這個任務,原因...