国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C/C++ - C++ 內(nèi)聯(lián)函數(shù)inline案例詳解

C++ 內(nèi)聯(lián)函數(shù)inline案例詳解

2021-12-27 15:21xusong C/C++

這篇文章主要介紹了C++ 內(nèi)聯(lián)函數(shù)inline案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

使用函數(shù)能夠避免將相同代碼重寫多次的麻煩,還能減少可執(zhí)行程序的體積,但也會(huì)帶來程序運(yùn)行時(shí)間上的開銷。

函數(shù)調(diào)用在執(zhí)行時(shí),首先要在棧中為形參和局部變量分配存儲(chǔ)空間,然后還要將實(shí)參的值復(fù)制給形參,接下來還要將函數(shù)的返回地址(該地址指明了函數(shù)執(zhí)行結(jié)束后,程序應(yīng)該回到哪里繼續(xù)執(zhí)行)放入棧中,最后才跳轉(zhuǎn)到函數(shù)內(nèi)部執(zhí)行。這個(gè)過程是要耗費(fèi)時(shí)間的。

另外,函數(shù)執(zhí)行 return 語句返回時(shí),需要從棧中回收形參和局部變量占用的存儲(chǔ)空間,然后從棧中取出返回地址,再跳轉(zhuǎn)到該地址繼續(xù)執(zhí)行,這個(gè)過程也要耗費(fèi)時(shí)間。

總之,使用函數(shù)調(diào)用語句和直接把函數(shù)中的代碼重新抄寫一遍相比,節(jié)省了人力,但是帶來了程序運(yùn)行時(shí)間上的額外開銷。

一般情況下,這個(gè)開銷可以忽略不計(jì)。但是,如果一個(gè)函數(shù)內(nèi)部沒有幾條語句,執(zhí)行時(shí)間本來就非常短,那么這個(gè)函數(shù)調(diào)用產(chǎn)生的額外開銷和函數(shù)本身執(zhí)行的時(shí)間相比,就顯得不能忽略了。假如這樣的函數(shù)在一個(gè)循環(huán)中被上千萬次地執(zhí)行,函數(shù)調(diào)用導(dǎo)致的時(shí)間開銷可能就會(huì)使得程序運(yùn)行明顯變慢。

作為特別注重程序執(zhí)行效率,適合編寫底層系統(tǒng)軟件的高級(jí)程序設(shè)計(jì)語言,C++ 用 inline 關(guān)鍵字較好地解決了函數(shù)調(diào)用開銷的問題。

在 C++ 中,可以在定義函數(shù)時(shí),在返回值類型前面加上 inline 關(guān)鍵字。如:

?
1
2
3
4
5
6
inline int Max (int a, int b)
{
    if(a >b)
        return a;
    return b;
}

增加了 inline 關(guān)鍵字的函數(shù)稱為“內(nèi)聯(lián)函數(shù)”。內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別在于:當(dāng)編譯器處理調(diào)用內(nèi)聯(lián)函數(shù)的語句時(shí),不會(huì)將該語句編譯成函數(shù)調(diào)用的指令,而是直接將整個(gè)函數(shù)體的代碼插人調(diào)用語句處,就像整個(gè)函數(shù)體在調(diào)用處被重寫了一遍一樣。

有了內(nèi)聯(lián)函數(shù),就能像調(diào)用一個(gè)函數(shù)那樣方便地重復(fù)使用一段代碼,而不需要付出執(zhí)行函數(shù)調(diào)用的額外開銷。很顯然,使用內(nèi)聯(lián)函數(shù)會(huì)使最終可執(zhí)行程序的體積增加。以時(shí)間換取空間,或增加空間消耗來節(jié)省時(shí)間,這是計(jì)算機(jī)學(xué)科中常用的方法。

內(nèi)聯(lián)函數(shù)中的代碼應(yīng)該只是很簡單、執(zhí)行很快的幾條語句。如果一個(gè)函數(shù)較為復(fù)雜,它執(zhí)行的時(shí)間可能上萬倍于函數(shù)調(diào)用的額外開銷,那么將其作為內(nèi)聯(lián)函數(shù)處理的結(jié)果是付出讓代碼體積增加不少的代價(jià),卻只使速度提高了萬分之一,這顯然是不劃算的。

有時(shí)函數(shù)看上去很簡單,例如只有一個(gè)包含一兩條語句的循環(huán),但該循環(huán)的執(zhí)行次數(shù)可能很多,要消耗大量時(shí)間,那么這種情況也不適合將其實(shí)現(xiàn)為內(nèi)聯(lián)函數(shù)。

另外,需要注意的是,調(diào)用內(nèi)聯(lián)函數(shù)的語句前必須已經(jīng)出現(xiàn)內(nèi)聯(lián)函數(shù)的定義(即整個(gè)數(shù)體),而不能只出現(xiàn)內(nèi)聯(lián)函數(shù)的聲明。

到此這篇關(guān)于C++ 內(nèi)聯(lián)函數(shù)inline案例詳解的文章就介紹到這了,更多相關(guān)C++ 內(nèi)聯(lián)函數(shù)inline內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:http://c.biancheng.net/view/199.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久综合狠狠综合久久综合88 | 久久国产精品视频 | 在线看片日韩 | 中文字幕日韩视频 | 亚洲精品久久久久久国产精华液 | 日本三级电影网站 | 一区二区在线电影 | 欧美日本韩国在线 | 91精品国产日韩91久久久久久 | 日韩欧美三级 | 少妇色欲网 | 在线视频国产一区 | av一区久久 | 日韩中文字幕在线播放 | 亚洲网站在线观看 | 日韩成人av电影在线观看 | 日本一区二区精品 | 少妇精品久久久久久久久久 | 一级毛片免费网站 | 欧美日韩不卡 | 欧美在线观看免费观看视频 | 亚洲免费国产视频 | 寡妇激情毛片免费视频 | 欧美日韩综合视频 | 一区视频 | 亚洲成人一区二区三区 | 亚洲国产成人精品久久久国产成人一区 | 国产视频www | 三级在线网 | 亚洲一区二区三区视频 | 欧美天堂| 国产超碰人人爽人人做人人爱 | 亚洲国产精品成人精品 | 国产精品亲子伦av一区二区三区 | 18.wxww.成人性视频高清 | 中文字幕乱码亚洲精品一区 | 亚洲在线日韩 | 日韩一区二区三区在线观看 | 牛牛澡牛牛爽一区二区 | 夜夜嗨av色一区二区不卡 | 成人免费视频网站在线观看 |