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貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
main函數(shù)的代碼中沒有聲明 max函數(shù)嗎? ?或者是沒有include "max.h" 嗎?

onemoo
TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
回復(fù)寫不開,再回答一貼:
應(yīng)該和gcc版本沒關(guān)系。
C語言所有函數(shù)在使用前都必須聲明,所以按道理,是不能不寫max聲明的。
不過呢,如果老師是想用這個(gè)例子來講解“鏈接的行為”,那也有可能會(huì)給出這樣的示例。
那么為什么你沒有提前聲明,仍能編譯通過呢?
因?yàn)镃語言有個(gè)“隱式聲明”的機(jī)制,如果函數(shù)沒有提前聲明,那么編譯器會(huì)假定其參數(shù)類型和返回類型是int。而在這里例子中這個(gè)隱式聲明正好和實(shí)際函數(shù)相匹配,所以可以最終鏈接成功。 ?也是因?yàn)檫@樣,這里編譯器只是提出了個(gè)警告,而非報(bào)錯(cuò)。
當(dāng)然具體是不是這個(gè)原因,只能看完整的代碼來確定。
添加回答
舉報(bào)
0/150
提交
取消