內聯函式和巨集定義

2021-08-16 06:40:52 字數 409 閱讀 3858

1、容易出錯,預處理器在拷貝巨集**時,常常會產生意想不到的邊際效用,容易產生二義性。(在呼叫處進行展開,會出現運算子優先順序的問題)

2、不可以除錯。然而內聯函式在debug版本裡面,它根本不是真正的內斂,在release中才會成為真正的內斂。

3、在c++中,巨集**無法操作類的私有資料成員。原因是,預處理器不能進行型別安全檢查和自動型別轉換,預處理無法處理this指標的問題。

c++中支援呼叫內聯函式,目的是提高函式的執行效率,用關鍵字inline放在函式定義,內聯函式通常就是將它在程式中內聯的展開。函式的呼叫是需要付出一定的時空開銷,因為系統在呼叫函式是,要保留現場,然後轉入被呼叫的函式執行,呼叫完後,再返回主調函式,在恢復現場。內聯函式就是將簡單的函式內嵌到程式**中,避免以上的開銷,這是用空間換來的,要是呼叫n次內聯函式,那就有n的拷貝動作。

內聯函式和巨集定義

在c中,我們常用巨集定義來達到優化速度的目的,但由於巨集定義的種種缺陷 大家應該都吃過這種苦吧 在c 中引入了內聯函式。內聯函式實現了巨集的概念,任何在類內定義的函式會自動的成為內聯函式,但是也可以在類外用inline關鍵字來定義內聯函式。內聯的目的和巨集一樣是為了減少函式呼叫的開銷,但是通常我們會...

巨集定義和內聯函式

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

巨集定義和內聯函式

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