3 回答

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

TA貢獻(xiàn)1752條經(jīng)驗 獲得超4個贊
因為它使用_file_和_line_宏,應(yīng)該為調(diào)用方解析,而不是這個被調(diào)用的函數(shù)。
- 3 回答
- 0 關(guān)注
- 344 瀏覽
添加回答
舉報