C中函數inline定義問題,求解釋
3 回答

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

繁星coding
TA貢獻1797條經驗 獲得超4個贊

當年話下
TA貢獻1890條經驗 獲得超9個贊
如果直接把函數體寫在頭文件里自動就是inline了,但遇到不可內聯的情況編譯器會報錯,要是頭文件里有函數體,而程序文件中又寫了函數體,如果不是重載的情況,編譯時就報錯了
應該是c++,c是沒有inline的
- 3 回答
- 0 關注
- 984 瀏覽
添加回答
舉報
0/150
提交
取消