3 回答

TA貢獻1784條經(jīng)驗 獲得超8個贊
這種用法,同一個文件內(nèi)的inline test函數(shù)會被內(nèi)聯(lián)展開,其他文件的test函數(shù),會編譯成普通函數(shù)來調(diào)用。
根據(jù)你的提問可以理解為:abc.h中的test函數(shù),被abc.h內(nèi)聯(lián)展開。abc.c中的test函數(shù),被abc,c調(diào)用,與abc.h里面的test無關。如果還有def.c調(diào)用test,那么調(diào)用那個的是abc.c中的。前提是abc.c和def.c不包含abc.h,如果包含abc.h那么調(diào)用test函數(shù)的地方,會被abc.h中的test函數(shù)進行內(nèi)聯(lián)展開。
GCC編譯器和 C99編譯器代碼有所不同,都可能能達到你描述代碼的要求,說可能是因為我只在gcc編譯器上編譯過類似代碼,c99的用法是網(wǎng)絡文章說的,我沒試過,所以只能說可能。

TA貢獻1797條經(jīng)驗 獲得超4個贊

TA貢獻1890條經(jīng)驗 獲得超9個贊
如果直接把函數(shù)體寫在頭文件里自動就是inline了,但遇到不可內(nèi)聯(lián)的情況編譯器會報錯,要是頭文件里有函數(shù)體,而程序文件中又寫了函數(shù)體,如果不是重載的情況,編譯時就報錯了
應該是c++,c是沒有inline的
- 3 回答
- 0 關注
- 982 瀏覽
添加回答
舉報