为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 1694 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信