C 內聯函式 03

2022-04-23 02:51:20 字數 652 閱讀 6052

在c++中我們通常定義以下函式來求兩個整數的最大值:

**如下:

int max(int a, int b)

為這麼乙個小的操作定義乙個函式的好處有:

① 容易閱讀和理解函式 max 的呼叫,要比讀一條等價的條件表示式並解釋它的含義要容易得多

② 如果需要做任何修改,修改函式要比找出並修改每一處等價表示式容易得多

③ 使用函式可以確保統一的行為,每個測試都保證以相同的方式實現

④ 函式可以重用,不必為其他應用程式重寫**

雖然有這麼多好處,但是寫成函式有乙個潛在的缺點:呼叫函式比求解等價表示式要慢得多。在大多數的機器上,呼叫函式都要做很多任務作:呼叫前要先儲存暫存器,並在返回時恢復,複製實參,程式還必須轉向乙個新位置執行c++中支援內聯函式,其目的是為了提高函式的執行效率,用關鍵字 inline 放在函式定義(注意是定義而非宣告)

inline int max(int a, int

b)則呼叫: cout

在編譯時展開為: cout

< b ? a : b)<

從而消除了把 max寫成函式的額外執行開銷

使用巨集**的缺點:

容易出錯,總會發生意想不到的邊際效應

巨集是不可除錯的,內聯函式可以除錯

巨集無法操作類的私有成員

03 內聯函式

產生原因 c 語言中有巨集函式的概念。巨集函式的特點是內嵌到呼叫 中去,避免了函式呼叫的開銷。但是由於巨集函式的處理發生在預處理階段,缺失了語法檢測和有可能帶來的語意差 錯。優缺點 巨集函式普通函式 優點內嵌 闢免壓棧與出棧的開銷。高度抽象,避免重複開發,型別檢查 缺點 替換,易使生成 體積變大,易...

C 內聯函式

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

C 內聯函式

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