C++ inline内联函数
C++ inline內(nèi)聯(lián)函數(shù)
- 簡(jiǎn)介
- 聲明內(nèi)聯(lián)函數(shù)
- 定義內(nèi)聯(lián)函數(shù)
- 總結(jié)
簡(jiǎn)介
函數(shù)是一個(gè)可以重復(fù)使用的代碼塊,CPU 會(huì)一條一條地挨著執(zhí)行其中的代碼。CPU 在執(zhí)行主調(diào)函數(shù)代碼時(shí)如果遇到了被調(diào)函數(shù),主調(diào)函數(shù)就會(huì)暫停,CPU 轉(zhuǎn)而執(zhí)行被調(diào)函數(shù)的代碼;被調(diào)函數(shù)執(zhí)行完畢后再返回到主調(diào)函數(shù),主調(diào)函數(shù)根據(jù)剛才的狀態(tài)繼續(xù)往下執(zhí)行。
一個(gè) C/C++ 程序的執(zhí)行過程可以認(rèn)為是多個(gè)函數(shù)之間的相互調(diào)用過程,它們形成了一個(gè)或簡(jiǎn)單或復(fù)雜的調(diào)用鏈條,這個(gè)鏈條的起點(diǎn)是 main(),終點(diǎn)也是 main()。當(dāng) main() 調(diào)用完了所有的函數(shù),它會(huì)返回一個(gè)值(例如return 0;)來結(jié)束自己的生命,從而結(jié)束整個(gè)程序。
函數(shù)調(diào)用是有時(shí)間和空間開銷的。程序在執(zhí)行一個(gè)函數(shù)之前需要做一些準(zhǔn)備工作,要將實(shí)參、局部變量、返回地址以及若干寄存器都?jí)喝霔V校缓蟛拍軋?zhí)行函數(shù)體中的代碼;函數(shù)體中的代碼執(zhí)行完畢后還要清理現(xiàn)場(chǎng),將之前壓入棧中的數(shù)據(jù)都出棧,才能接著執(zhí)行函數(shù)調(diào)用位置以后的代碼。
如果函數(shù)體代碼比較多,需要較長(zhǎng)的執(zhí)行時(shí)間,那么函數(shù)調(diào)用機(jī)制占用的時(shí)間可以忽略;如果函數(shù)只有一兩條語句,那么大部分的時(shí)間都會(huì)花費(fèi)在函數(shù)調(diào)用機(jī)制上,這種時(shí)間開銷就就不容忽視。
為了消除函數(shù)調(diào)用的時(shí)空開銷,C++ 提供一種提高效率的方法,即在編譯時(shí)將函數(shù)調(diào)用處用函數(shù)體替換,類似于C語言
總結(jié)
以上是生活随笔為你收集整理的C++ inline内联函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 粟裕在山门的办公室旧址位于哪儿
- 下一篇: C/C++extern关键字