C 內聯函式

2021-09-29 18:44:57 字數 519 閱讀 3467

以inline修飾的函式叫做內聯函式,在編譯c++時編譯器會在呼叫內聯函式的地方展開,沒有函式壓棧的開銷,內聯函式提公升程式執行的效率。

是不是感覺和巨集很像,不過巨集既可以定義函式也能定義常量,順便提一下巨集的優缺點

優點:1.增強**的復用性

2.提高效能

缺點:1.不方便除錯巨集(預編譯階段就進行了轉換)

2.導致**的可讀性變差,可維護性差,容易誤用

3.沒有型別安全性的檢查

所以建議使用內聯函式和const分別替代巨集的函式定義和常量定義

在debug版本下內聯函式是不會展開的,需要設定,而release版本因為有編譯器的優化是會展開函式的

inline是一種以空間換時間的做法,省去呼叫函式的開銷,所以函式中**很長或者有迴圈/遞迴不適宜使用內聯函式。

inline只是對編譯器的乙個建議,若函式中**很長或者有迴圈/遞迴等,編譯器會自動忽略掉內聯。

inline不建議宣告和定義分離,分離會導致鏈結錯誤,因為inline被展開,就沒有函式位址了,鏈結就會找不到。

C 內聯函式

1 什麼是內聯函式?內聯函式就是小型函式,犧牲空間來節省函式呼叫的開銷,一般用作比較小的函式,即函式內部沒有迴圈 開關語句等。內聯函式被發明出來就是為了取代c中的巨集,因為巨集是單純的替換而沒有型別檢查所以經常出毛病,2 為什麼要引入內聯函式?當然,引入內聯函式的主要目的是 解決程式中函式呼叫的效率...

C 內聯函式

1 什麼是內聯函式?2 為什麼要引入內聯函式?3 為什麼inline能取代巨集?4 內聯函式和巨集的區別?5 什麼時候用內聯函式?6 如何使用內聯函式?7 內聯函式的優缺點?8 如何禁止函式進行內聯?9 注意事項 1 什麼是內聯函式?內聯函式是指那些定義在類體內的成員函式,即該函式的函式體放在類體內...

c 內聯函式

1 什麼是內聯函式?內聯函式是指那些定義在類體內的成員函式,即該函式的函式體放在類體內。2 為什麼要引入內聯函式?當然,引入內聯函式的主要目的是 解決程式中函式呼叫的效率問題。另外,前面我們講到了巨集,裡面有這麼乙個例子 define abs x x 0?x x 當 i出現時,巨集就會歪曲我們的意思...