內聯函式與巨集的使用注意

2021-08-13 16:18:28 字數 717 閱讀 1030

int max(int a, int b)

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

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

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

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

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

雖然有這麼多好處,但是寫成函式有乙個潛在的缺點:呼叫函式比求解等價表示式要慢得多。在大多數的機器上,呼叫函式都要做很多任務作:呼叫前要先儲存暫存器,並在返回時恢復,複製實參,程式還必須轉向乙個新位置執行

c++中支援內聯函式,其目的是為了提高函式的執行效率,用關鍵字 inline 放在函式定義(注意是定義而非宣告,下文繼續講到)的前面即可將函式指定為內聯函式,內聯函式通常就是將它在程式中的每個呼叫點上「內聯地」展開,假設我們將 max 定義為內聯函式:

複製** **如下:

inline int max(int a, int b)

則呼叫: cout<

inline int a::max()

main.cpp :

複製** **如下:

using namespace std;

inline int a::max()

int main()

{ a a(3, 5);

cout<

巨集與內聯函式

函式作為一種抽象機制,對解決大型複雜問題起到了很大作用。但是,由於函式呼叫時需要開銷的,例如,函式呼叫時需要保護呼叫者的執行環境,進行引數傳遞,執行呼叫命令,為區域性變數分配空間以及執行返回指令等,因此函式會帶來程式執行效率的下降,特別是對一些小函式的頻繁呼叫。c 提供了兩種解決上述問題的辦法 巨集...

巨集與內聯函式

建議 1 使用const定義常量而不是 define 2 使用inline內聯函式而不是 define來定義小型函式 第一部分 巨集 為什麼要使用巨集呢?因為函式的呼叫 必須要將程式執行的順序轉移到函式所存放在記憶體中的某個位址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。這種轉移操作...

巨集與內聯函式

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