內(nèi)聯(lián)函數(shù)是為了提高程序運行速度的一種改進。
創(chuàng)新互聯(lián)建站專注于通城企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站制作。通城網(wǎng)站建設(shè)公司,為通城等地區(qū)提供建站服務(wù)。全流程按需定制,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
當(dāng)程序運行時,有時候需要重復(fù)調(diào)用一個函數(shù),但是因為重復(fù)調(diào)用這個函數(shù),會不斷的造成函數(shù)調(diào)用,
會不斷進棧出棧造成cpu的消耗。
而內(nèi)聯(lián)函數(shù)是在編譯時就將這個函數(shù)邊入進去,不用再進行地址的跳轉(zhuǎn)。但是不可避免的產(chǎn)生了一些
內(nèi)存的消耗,所有有時候用戶在申請內(nèi)聯(lián)時,內(nèi)聯(lián)函數(shù)過于大,編譯器不會進行允許
例如:
#include<iostream>
#include<ctime>
#include<windows.h>
using namespace std;
int m = 10;
inline int a(int x){ return x; }//在內(nèi)聯(lián)函數(shù)中的時間為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 ;//注意不加區(qū)別的替換。
由運行結(jié)果可以看出很明顯這里運行速度遠快于普通方式和內(nèi)聯(lián)方式;
但是需要注意,
#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;
}
這里運行結(jié)果為7 因為是這樣計算的 1+3*1+3
所以可以改為藍字寫的
網(wǎng)站題目:內(nèi)聯(lián)函數(shù)和宏
URL標(biāo)題:http://jinyejixie.com/article44/ijjpee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、微信公眾號、虛擬主機、App設(shè)計、商城網(wǎng)站、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)