內聯函式和巨集定義

2021-05-28 06:34:38 字數 357 閱讀 3840

在c中,我們常用巨集定義來達到優化速度的目的,但由於巨集定義的種種缺陷(大家應該都吃過這種苦吧),在c++中引入了內聯函式。

內聯函式實現了巨集的概念,任何在類內定義的函式會自動的成為內聯函式,但是也可以在類外用inline關鍵字來定義內聯函式。

內聯的目的和巨集一樣是為了減少函式呼叫的開銷,但是通常我們會把比較簡單且經常呼叫的函式設為內聯函式,如果函式體過大,就沒有必要定義為內聯函式了,而與巨集定義不同的是,在編譯階段內聯函式也會進行引數型別的檢查,這是巨集定義這個僅僅在預處理階段簡單替換**完成不了的優點。

內聯函式在類中常用作訪問函式,就是對私有變數的簡單函式getvalue()和 setvalue(),當然也可以對變數進行簡單的操作,這樣程式的開銷很小。

巨集定義和內聯函式

巨集定義和內聯函式,都可以減少函式的呼叫開銷,每次呼叫函式不必壓棧和開闢新的空間。使用巨集定義和內聯函式 的執行效率高。它們的區別是 1 巨集定義是預編譯器載入,而內聯函式是由編譯器載入 2 巨集定義容易產生一些錯誤,define min x x x min 1 3 得到的結果不是我們想要的16,而...

內聯函式和巨集定義

1 容易出錯,預處理器在拷貝巨集 時,常常會產生意想不到的邊際效用,容易產生二義性。在呼叫處進行展開,會出現運算子優先順序的問題 2 不可以除錯。然而內聯函式在debug版本裡面,它根本不是真正的內斂,在release中才會成為真正的內斂。3 在c 中,巨集 無法操作類的私有資料成員。原因是,預處理...

巨集定義和內聯函式

巨集定義和內聯函式,都可以減少函式的呼叫開銷,每次呼叫函式不必壓棧和開闢新的空間。使用巨集定義和內聯函式 的執行效率高。它們的區別是 1 巨集定義是預編譯器載入,而內聯函式是由編譯器載入 2 巨集定義容易產生一些錯誤,define min x x x min 1 3 得到的結果不是我們想要的16,而...