inline內聯函式和巨集的區別

2021-06-20 15:25:09 字數 673 閱讀 4736

1、內聯函式在編譯時展開,而巨集在預編譯時展開

2、在編譯的時候,內聯函式直接被嵌入到目標**中去,而巨集只是乙個簡單的文字替換。

3、內聯函式可以進行諸如型別安全檢查、語句是否正確等編譯功能,巨集不具有這樣的功能。

4、巨集不是函式,而inline是函式

5、巨集在定義時要小心處理巨集引數,一般用括號括起來,否則容易出現二義性。而內聯函式不會出現二義性。

c++ inline函式

inline函式一般用於比較小的,頻繁呼叫的函式,這樣可以減少函式呼叫帶來的開銷。只需要在函式返回型別前加上關鍵字inline,即可將函式指定為inline函式。

inline有點類似於巨集定義,但是它和巨集定義不同的是,巨集定義只是簡單的文字替換,是在預編譯階段進行的。而inline的引入正是為了取消這種複雜的巨集定義的。

同其它函式不同的是,最好將inline函式定義在標頭檔案,而不僅僅是宣告,因為編譯器在處理inline函式時,需要在呼叫點內聯展開該函式,所以僅需要函式宣告是不夠的。

例如:1 #include

23 using namespace std;

45 inline int add(int a, int b)6 9

10 int main(void)

11 以上12行處在編譯時將被展開為:

cout << (a + b) << endl;

C 中inline內聯函式和巨集之間的區別

inline函式是c 引入的機制,目的是解決使用巨集定義的一些缺點。用它替代巨集定義,消除巨集定義的缺點。巨集定義使用預處理器實現,做一些簡單的字元替換,因此不能進行引數有效性的檢測。另外它的返回值不能被強制轉換為可轉換的合適型別,且c 中引入了類及類的訪問控制,在涉及到類的保護成員和私有成員就不能...

巨集和c 中的inline內聯函式

inline函式是c 引入的機制,目的是解決使用巨集定義的一些缺點。1.為什麼要引入內聯函式 內聯函式的作用 用它替代巨集定義,消除巨集定義的缺點。巨集定義使用預處理器實現,做一些簡單的字元替換因此不能進行引數有效性的檢測。另外它的返回值 不能被強制轉換為可轉換的合適 型別,且c 中引入了類及類的訪...

內聯函式和巨集的區別

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