我正在通过交流代码突然出现意外疑问.下面的代码向我发出警告:conflicting types for 'display',但是当我删除void时它工作正常.
有人可以解释一下我究竟是什么错误吗?提前致谢.
#include<stdio.h>
main(){
display();
}
void display()
{
printf("hello world");
}
Run Code Online (Sandbox Code Playgroud)
在C99之前的C中,如果函数原型在函数之前不可用,则编译器假定函数返回一个int.
所以display()假设返回一个int.但是当编译器看到实际的定义时display(),就会发生冲突,因为实际的具有void返回类型.
但是,此隐式int规则已从C99开始删除.所以你的程序在技术上是无效的.你也可以
display()在源文件的顶部声明原型,或者display()上面的定义main()