內聯函式和巨集

2021-09-20 22:01:29 字數 1028 閱讀 1447

內聯函式是為了提高程式執行速度的一種改進。

當程式執行時,有時候需要重複呼叫乙個函式,但是因為重複呼叫這個函式,會不斷的造成函式呼叫,

會不斷進棧出棧造成cpu的消耗。

而內聯函式是在編譯時就將這個函式邊入進去,不用再進行位址的跳轉。但是不可避免的產生了一些

記憶體的消耗,所有有時候使用者在申請內聯時,內聯函式過於大,編譯器不會進行允許

例如:#include

#include

#include

using namespace std;

int m = 10;

inline int a(int x)//在內聯函式中的時間為3031ms

//int a(int x) //一般情況用了3844ms

int main()

可以看出他們的執行模式確實不同。

巨集:

#define a(x) x   //把a(x) 替換成x ;//注意不加區別的替換。

由執行結果可以看出很明顯這裡執行速度遠快於普通方式和內聯方式;

但是需要注意,

#define square(x) x*x;

//#define square(x) ((x)*(x));

using namespace std;

int m ;

int main()

這裡執行結果為7  因為是這樣計算的 1+3*1+3

所以可以改為藍字寫的

內聯函式和巨集

1.內聯函式 在c 中我們通常定義以下函式來求兩個整數的最大值 複製 如下 int max int a,int b 為這麼乙個小的操作定義乙個函式的好處有 閱讀和理解函式 max 的呼叫,要比讀一條等價的條件表示式並解釋它的含義要容易得多 如果需要做任何修改,修改函式要比找出並修改每一處等價表示式容...

內聯函式和巨集

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

巨集 函式和內聯

先說巨集和函式的區別 1.巨集做的是簡單的字串替換 注意是字串的替換,不是其他型別引數的替換 而函式的引數的傳遞,引數是有資料型別的,可以是各種各樣的型別.2.巨集的引數替換是不經計算而直接處理的,而函式呼叫是將實參的值傳遞給形參,既然說是值,自然是計算得來的.3.巨集在編譯之前進行,即先用巨集體替...