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);
^ |
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|
main函数的代码中没有声明 max函数吗? 或者是没有include "max.h" 吗? |
|
|
|
|
回复写不开,再回答一贴:
应该和gcc版本没关系。
C语言所有函数在使用前都必须声明,所以按道理,是不能不写max声明的。
不过呢,如果老师是想用这个例子来讲解“链接的行为”,那也有可能会给出这样的示例。
那么为什么你没有提前声明,仍能编译通过呢?
因为C语言有个“隐式声明”的机制,如果函数没有提前声明,那么编译器会假定其参数类型和返回类型是int。而在这里例子中这个隐式声明正好和实际函数相匹配,所以可以最终链接成功。 也是因为这样,这里编译器只是提出了个警告,而非报错。
当然具体是不是这个原因,只能看完整的代码来确定。 |
|
|
|
|