溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

內聯函數和宏

發布時間:2020-06-23 15:00:25 來源:網絡 閱讀:614 作者:神跡難覓 欄目:編程語言

內聯函數是為了提高程序運行速度的一種改進。


當程序運行時,有時候需要重復調用一個函數,但是因為重復調用這個函數,會不斷的造成函數調用,

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

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

內存的消耗,所有有時候用戶在申請內聯時,內聯函數過于大,編譯器不會進行允許

例如:

        


#include<iostream>

#include<ctime>

#include<windows.h>

using namespace std;

int m = 10;

inline int a(int x){ return x; }//在內聯函數中的時間為3031ms

//int a(int x){ return x;} //一般情況用了3844ms

int main(){

cout << "start" << endl;

long int sum = 0;

int istart;

istart = GetTickCount();

for (long int i = 1; i <= 100000000; i++){

sum+=a(i);

}

cout << sum << endl;

cout << GetTickCount() - istart <<"ms"<< endl;//計算運算時間

system("pause");

return 0;

}

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



宏:

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


內聯函數和宏

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


但是需要注意,

#define SQUARE(x) x*x;

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

using namespace std;

int m ;

int main(){

m = SQUARE(1 + 3);

cout << m << endl;

system("pause");

return 0;

}

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

所以可以改為藍字寫的



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女