區別 :內聯函數和普通函數的區別

內聯函數和普通函數的區別:
1、在編譯過程中,內聯函數在函數的調用點,把函數代碼全部展開,所以沒有標準函數的棧幀的開闢和回退
(如果 調用函數的開銷 > 函數執行的開銷,那麼就建議寫爲內聯函數 )
調用的開銷:函數的棧幀的開闢和回退
執行的開銷:函數體內代碼執行的開銷

2、內聯函數只在本文件可見,編譯階段就進行了替換,所以不產生符號,所以一般在頭文件中定義,這樣就可以在其它文件調用。普通函數產生符號,多個文件引用頭文件,會產生符號重定義的錯誤。
.編譯階段不編譯.h文件,只編譯.c 或.cpp 文件

注意:inline只在release版本起作用,debug版本inline函數也需要棧幀的開闢和回退

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章