C 內聯函式與C語言巨集的比較

2021-06-14 00:01:34 字數 683 閱讀 8792

c++內聯函式

通過將內聯函式的編譯**與其它程式**「內聯」起來,提高程式執行的速度。

即:編譯器將使用相應的函式**替換函式呼叫。對於內聯**,程式無需跳到另乙個位置處執行**,然後在跳回來。因此,內聯函式的執行速度比常規函式稍快,但代價是要占用更多的記憶體。若在多個不同的地方呼叫同乙個內聯函式,則程式將包括該函式的多個**拷貝。

應當有選擇的使用內聯函式。

當函式**過長或者邏輯較為複雜時,不適合使用內聯函式。

注意:內聯函式不能遞迴

c語言巨集定義

簡單來說,當使用巨集定義乙個函式時,並不是通過傳遞引數實現的,而是通過文字替換來實現的

內聯函式與巨集的比較

由於機制的不同,使得c++的內聯功能遠遠超過c語言的巨集定義。例如下面的巨集定義:

#define square(x) x*x

a = square(5.0);

b = square(4.5+7.5);

d = square(c++);

上面的三次呼叫只有第乙個可以正常工作

第二個將被替換為:b = 4.5 + 7.5 * 4.5 + 7.5

第三個將被替換為:d = c++ * c++,變數c執行了兩次加法

總之,如果c預言的巨集執行了類似函式的功能,

應當盡量改為用c++內聯函式實現。

C 巨集與內聯函式

因為函式呼叫需要開銷 如 保護呼叫者的執行環境 引數傳遞 執行呼叫指令等 所以函式呼叫會帶來程式執行效率的下降,特別是對一些小函式的頻繁呼叫將是程式的效率有很大的降低。c 提出了兩種解決方法 巨集 內聯函式。1.巨集 巨集是c 編譯預處理系統處理的實體。巨集定義的4種格式 1 define 巨集名 ...

巨集函式與內聯函式比較

第一部分 巨集 為什麼要使用巨集呢?因為函式的呼叫必須要將程式執行的順序轉移到函式所存放在記憶體中的某個位址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。這種轉移操作要求在轉去執行前要儲存現場並記憶執行的位址,轉回後要恢復現場,並按原來儲存位址繼續執行。因此,函式呼叫要有一定的時間和空...

C 中內聯函式與巨集

c 內聯函式 inline 介紹 介紹內聯函式之前,有必要介紹一下預處理巨集。內聯函式的功能和預處理巨集的功能相似。相信大家都用過預處理巨集,我們會經常定義一些巨集,如 define table comp x x 0?x 0 define table comp x x 0?x 0 就定義了乙個巨集。...