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個贊
回復寫不開,再回答一貼:
應該和gcc版本沒關系。
C語言所有函數在使用前都必須聲明,所以按道理,是不能不寫max聲明的。
不過呢,如果老師是想用這個例子來講解“鏈接的行為”,那也有可能會給出這樣的示例。
那么為什么你沒有提前聲明,仍能編譯通過呢?
因為C語言有個“隱式聲明”的機制,如果函數沒有提前聲明,那么編譯器會假定其參數類型和返回類型是int。而在這里例子中這個隱式聲明正好和實際函數相匹配,所以可以最終鏈接成功。 ?也是因為這樣,這里編譯器只是提出了個警告,而非報錯。
當然具體是不是這個原因,只能看完整的代碼來確定。
- 2 回答
- 0 關注
- 1738 瀏覽
添加回答
舉報
0/150
提交
取消