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

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

gcc執行make文件時為什么會有警告?按老師的做的阿(來自linux的原理與實踐)

gcc執行make文件時為什么會有警告?按老師的做的阿(來自linux的原理與實踐)

selense 2016-07-25 19:56:30
wenyue@wen-Inspiron-3459:~/workspace/les1$ makegcc Max.c hello.chello.c: In function ‘main’:hello.c:7:11: warning: implicit declaration of function ‘max’ [-Wimplicit-function-declaration]?? int num=max(a,b);?????????? ^
查看完整描述

2 回答

已采納
?
onemoo

TA貢獻883條經驗 獲得超454個贊

main函數的代碼中沒有聲明 max函數嗎? ?或者是沒有include "max.h" 嗎?

查看完整回答
反對 回復 2016-07-25
  • selense
    selense
    那個老師說不需要寫的,有沒有可能時gcc 版本不夠高?
?
onemoo

TA貢獻883條經驗 獲得超454個贊

回復寫不開,再回答一貼:

應該和gcc版本沒關系。

C語言所有函數在使用前都必須聲明,所以按道理,是不能不寫max聲明的。


不過呢,如果老師是想用這個例子來講解“鏈接的行為”,那也有可能會給出這樣的示例。


那么為什么你沒有提前聲明,仍能編譯通過呢?

因為C語言有個“隱式聲明”的機制,如果函數沒有提前聲明,那么編譯器會假定其參數類型和返回類型是int。而在這里例子中這個隱式聲明正好和實際函數相匹配,所以可以最終鏈接成功。 ?也是因為這樣,這里編譯器只是提出了個警告,而非報錯。


當然具體是不是這個原因,只能看完整的代碼來確定。


查看完整回答
1 反對 回復 2016-07-26
  • 2 回答
  • 0 關注
  • 1738 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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