重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
C語(yǔ)言本身是不支持內(nèi)聯(lián)函數(shù)的,在最新的C標(biāo)準(zhǔn)C99中C語(yǔ)言支持了內(nèi)聯(lián)函數(shù)。
專業(yè)從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,高端網(wǎng)站制作設(shè)計(jì),小程序制作,網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術(shù)團(tuán)隊(duì)竭力真誠(chéng)服務(wù),采用HTML5+CSS3前端渲染技術(shù),響應(yīng)式網(wǎng)站建設(shè),讓網(wǎng)站在手機(jī)、平板、PC、微信下都能呈現(xiàn)。建站過(guò)程建立專項(xiàng)小組,與您實(shí)時(shí)在線互動(dòng),隨時(shí)提供解決方案,暢聊想法和感受。
C++支持內(nèi)聯(lián)函數(shù)。
從編譯器的角度:
有些C語(yǔ)言編譯器,例如GNU C提供了內(nèi)聯(lián)函數(shù)的支持。
所有C++編譯器都支持內(nèi)聯(lián)函數(shù)。
如果你的C語(yǔ)言編譯器不支持內(nèi)聯(lián)函數(shù),看看它有多古老,太古老不行(例如 Turbo C 2.0)。如果是C/C++合體編譯器,那就切換到編譯C++模式(例如VisualC++)。
比如
int g(int x)
{
return x + x;
}
int f()
{
return g();
}
這樣f會(huì)調(diào)用g,然后g返回x + x給f,然后f繼續(xù)把那個(gè)值返回給調(diào)用者。
如果g是inline的話。f會(huì)被直接編譯成。
int f()
{
return x + x;
}
相當(dāng)于把g執(zhí)行的操作直接融合到f里。這樣減少了調(diào)用g消耗的時(shí)間,但同時(shí)也增大了f的尺寸。
這就是inline函數(shù),也就是所謂的內(nèi)聯(lián)函數(shù)。
---------
但是現(xiàn)在不是這樣了。
現(xiàn)在的編譯器會(huì)自動(dòng)決定是否對(duì)函數(shù)進(jìn)行上面的操作,而不是根據(jù)你前面加不加inline。
但是inline本身還是有另外一個(gè)意義:
一個(gè)可執(zhí)行文件的cpp文件中一個(gè)函數(shù)只能被定義一次。如果你把函數(shù)定義在一個(gè).h文件中并讓兩個(gè)cpp包含就會(huì)造成這個(gè)函數(shù)分別在兩個(gè)cpp中被定義產(chǎn)生錯(cuò)誤。但是inline函數(shù)是允許在多個(gè)cpp中多次定義的,就解決了這個(gè)問(wèn)題。
C語(yǔ)言編譯器應(yīng)該不支持inline
inline 關(guān)鍵字用來(lái)定義一個(gè)類的內(nèi)聯(lián)函數(shù),C++引入它的主要原因是用它替代C中表達(dá)式形式的宏定義