猿问

gcc执行make文件时为什么会有警告?按老师的做的阿(来自linux的原理与实践)

wenyue@wen-Inspiron-3459:~/workspace/les1$ make
gcc Max.c hello.c
hello.c: In function ‘main’:
hello.c:7:11: warning: implicit declaration of function ‘max’ [-Wimplicit-function-declaration]
   int num=max(a,b);
           ^



selense
浏览 1695回答 2
2回答

onemoo

main函数的代码中没有声明 max函数吗?  或者是没有include "max.h" 吗?

onemoo

回复写不开,再回答一贴:应该和gcc版本没关系。C语言所有函数在使用前都必须声明,所以按道理,是不能不写max声明的。不过呢,如果老师是想用这个例子来讲解“链接的行为”,那也有可能会给出这样的示例。那么为什么你没有提前声明,仍能编译通过呢?因为C语言有个“隐式声明”的机制,如果函数没有提前声明,那么编译器会假定其参数类型和返回类型是int。而在这里例子中这个隐式声明正好和实际函数相匹配,所以可以最终链接成功。  也是因为这样,这里编译器只是提出了个警告,而非报错。当然具体是不是这个原因,只能看完整的代码来确定。
随时随地看视频慕课网APP
我要回答