3 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
inline
, static inline
extern inline
GNU89:
inline
:函數(shù)可能是內(nèi)聯(lián)的(不過(guò)只是個(gè)提示)。一個(gè)線外的版本總是被發(fā)出和外部可見(jiàn)。因此,您只能在一個(gè)編譯單元中定義這樣一個(gè)內(nèi)聯(lián),而其他每一個(gè)編譯單元都需要將其視為一個(gè)離線函數(shù)(否則在鏈接時(shí)會(huì)得到重復(fù)的符號(hào))。 extern inline
不會(huì)生成出線版本,但可能會(huì)調(diào)用一個(gè)版本(因此,您必須在其他編譯單元中定義該版本)。不過(guò),單定義規(guī)則是適用的;出線版本必須具有與此處提供的內(nèi)聯(lián)代碼相同的代碼,以防編譯器調(diào)用該代碼。 static inline
將不會(huì)生成一個(gè)外部可見(jiàn)的出線版本,盡管它可能會(huì)生成一個(gè)文件靜態(tài)版本?!耙粋€(gè)定義”規(guī)則不適用,因?yàn)閺膩?lái)沒(méi)有發(fā)出外部符號(hào),也沒(méi)有對(duì)外部符號(hào)的調(diào)用。
C99(或GNU99):
inline
*與GNU89一樣“內(nèi)聯(lián)外掛”;沒(méi)有發(fā)出外部可見(jiàn)函數(shù),但可能會(huì)調(diào)用一個(gè)函數(shù),因此必須存在 extern inline
類(lèi)似于GNU89“內(nèi)聯(lián)”:發(fā)出外部可見(jiàn)代碼,因此最多一個(gè)翻譯單元可以使用此代碼。 static inline
*像GNU89“靜態(tài)內(nèi)聯(lián)”。這是gnu 89和c99之間唯一的便攜式
C+:
static inline
extern inline

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
因?yàn)樗褂胈file_和_line_宏,應(yīng)該為調(diào)用方解析,而不是這個(gè)被調(diào)用的函數(shù)。
- 3 回答
- 0 關(guān)注
- 470 瀏覽
添加回答
舉報(bào)