內聯函式和巨集函式的一些區別

2022-09-02 16:42:09 字數 521 閱讀 3535

懶得寫了,直接放上答案鏈結吧

巨集和內聯函式的意義

相比普通函式,內聯函式效率更高,其主要原因為內聯函式不需要中斷呼叫,通過複製**節省了函式呼叫的時間。

從內聯函式的實現我們可以看出,其僅僅節省了函式呼叫的時間,若本身內聯的函式耗時就長,節省這麼一點呼叫時間並不會有太大的提公升,而且函式本身複雜,相應最終可執行檔案的大小增量卻比較大,因此內聯函式不應過大,主要用於以下幾種情況:

1)乙個函式不斷被重複呼叫

2)函式簡單,不包含for、while、switch等語句。

實現時需要注意:

1、關鍵字inline必須與函式定義體放在一起才能使函式成為內聯,僅將inline放在函式宣告前不起任何作用。

2、內聯函式應該在標頭檔案中定義。可以確保在呼叫函式時所使用的定義是相同的,並保證在呼叫點該函式的定義對編譯器是可見的。

巨集與內聯函式的對比:

1、內聯函式相比較於巨集而言,內聯函式要做引數型別檢查,從而內聯函式相比巨集而言更加安全。

2、內聯函式在執行時可除錯,而巨集定義不可以。

關於巨集和函式 內聯函式的一些區別

巨集和函式的區別 1.巨集做的是簡單的字串替換 注意是字串的替換,不是其他型別引數的替換 而函式的引數的傳遞,引數是有資料型別的,可以是各種各樣的型別。2.巨集的引數替換是不經過計算而直接處理的,而函式呼叫是將實參的值傳遞給形參,既然說是值,自熱是經過計算得來的。3.巨集在編譯之前進行,即先用巨集替...

內聯函式和巨集的區別

首先要說明的是內聯函式只在c 中有這個概念,在c語言中沒有。1.巨集的缺陷 為什麼要使用巨集呢?因為函式的呼叫必須要將程式執行的順序轉移到函式所存放在記憶體中的某個位址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。這種轉移操作要求在轉去執行前儲存現場並且記憶執行的位址,轉回後要恢復現場...

內聯函式和巨集的區別

1 替換的時機 內聯函式是在編譯期間進行替換,就是將該函式在函式的呼叫點直接展開 巨集函式是在預處理階段替換 2 替換的成功率 內聯函式只是對編譯器的乙個建議,如果編譯器覺得該函式不適合成為內聯函式時,便會忽略前面的 inline 關鍵字,比如我們將遞迴函式寫成內聯函式,編譯器會忽略前面的 inli...