C++ 中的 inline function

相信大家對於函式都不陌生,但是對於 inline 函式,也叫做內嵌函式,或許大家不是那麼的清楚熟悉,這篇就來看看 C++ 中的 inline 是什麼!

inline 函式

inline 函式的語法也很簡單,就只要在函式前面加上 inline 關鍵字就好了 :

#include<stdio.h>
#include<iostream>
using namespace std;

inline square(int x) {
    
    
    return x*x;
}

int main() {
    
    
    cout << sqaure(10) << endl; // 輸出 100
}

那麼 inline 的目的到底是甚麼呢 ? 其實 inline 的目的在於加速 c++ 的執行速度,在輸出上確實不會有太大的差異。那麼來看看,inline 函式是怎麼做的 ?

inline 機制

一般而言,當我們撰寫函數,並呼叫使用,計算機的機器語言指令會紀錄目前工作階段的記憶體位址,然後跳至函數的記憶體位置處理完程序後,並回到原先的位址上,而這樣來回會造成時間上的額外負擔。

C++於是提供 inline 函數,當我們加入關鍵字inline 時,在編譯時便會把函數中的代碼中
直接展開。

編譯器不一定會執行 inline

那我們可能會想說,那我乾脆所有函式都前面加個 inline,這樣全部都能提升效率。顯然這是不可能的。為甚麼呢 ?

因為編譯器不一定會執行你所寫的 inline 函式。對於太過複雜的函式,編譯器是會拒絕 inline 的執行的,這麼一來,反而比正常呼叫函式的過程又多了額外的開銷,適得其反。

明智的使用 inline

可惜的是,並沒有一個明確的標準告訴我們究竟怎樣的函式才可以寫成 inline,且編譯器也會響應。所以我們要謹記使用 inline 的準則 :

  • 使用頻率高
  • 簡單
  • 短小

諸如,for, switch 等較複雜的邏輯結構都是有可能會被編譯器拒絕的。

猜你喜欢

转载自blog.csdn.net/weixin_46803507/article/details/107053817