亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C中函數inline定義問題,求解釋?

C中函數inline定義問題,求解釋?

元芳怎么了 2019-02-26 10:06:16
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的用法是網絡文章說的,我沒試過,所以只能說可能。

查看完整回答
反對 回復 2019-03-26
?
繁星coding

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

這個inline函數的問題也許是很“迷人”的一個問題,要理解它還要回到C語言的源頭去-C語言標準,這里貼出C99(C11現在還收費呢)中關于inline的一部分內容。

你看看你能看明白嗎?而且可以肯定的是你給出的那段代碼一定會編譯出錯的,會出現重復定義問題。




查看完整回答
反對 回復 2019-03-26
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

如果直接把函數體寫在頭文件里自動就是inline了,但遇到不可內聯的情況編譯器會報錯,要是頭文件里有函數體,而程序文件中又寫了函數體,如果不是重載的情況,編譯時就報錯了

應該是c++,c是沒有inline的

查看完整回答
反對 回復 2019-03-26
  • 3 回答
  • 0 關注
  • 984 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號