在函式簡介中的範例,有一個pow2()函式:
int pow2(int num) {
return num*num;
}
在呼叫函式時會需要分配記憶空間因而需要額外的資源負擔,像pow2()這樣的小函式,可以「建議」編譯器將之設定為「行內涵式」(Inline function),如果建議被採納,則該函式會自動在呼叫點展現為程式碼,行內涵式建議可以直接定義於表頭檔案中,例如:
inline int pow2(int num) {
return num*num;
}
int pow(int, int);
雖然在表頭檔案中不建議實作函式本體,但行內涵式實際上還是在呼叫它的執行點上被展開,所以行內涵式並不違反這個規則,配合表頭檔案,您可以如下實作 pow()函式本體:
#include "math.h"
int pow(int n, int p) {
int r = 1;
for(int i = 0; i < p; i++)
r *= n;
return r;
}
至於範例主函式則不變,如下所示:
#include <iostream>
#include "math.h"
using namespace std;
int main() {
int num = 0;
int power = 0;
cout << "輸入數值:";
cin >> num;
cout << "輸入平方:";
cin >> power;
cout << num << "平方:"
<< pow2(num) << endl;
cout << num << "的" << power << "次方:"
<< pow(num, power)
<< endl;
return 0;
}
行內涵式只能建議編譯器,也就是說建議並不一定會被採納,這視您的編譯器而定,像是使用到goto、static變數、迴圈、switch等等,這些編譯器可能不接受行內涵式的建議,遞迴函式也無法在呼叫點展開,一個數千行的函式也不適合在呼叫點展開,如果編譯器拒絕將函式展開,它會將該函式視為一般函式進行編譯,inline的建議會被忽略。