在下面的程序中,我使用了两个函数prd()和display().我在main()中调用之前没有声明它们都在main()之前,并且我在main()之后定义了两个函数.然而,prd( )在main()内部顺利工作,调用display()显示警告“’display’的上一个隐式声明在这里”.有什么不同display()有警告,但没有其他功能prd() ?我已经宣布它们都没有开始.由于调用了一个警告,但是其他一个工作正常.
#include<stdio.h> int main() { int x=8,y=11; printf("The product of %d & %d is %d",x,y,prd(x,y)); display(); return 0; } int prd(int x,int y) { return x*y; } void display() { printf("\n Good Morning"); }
PS:如果你能回答这个次要问题,我真的很感激 – “C中是否根本没有必要的函数声明,只要它有定义吗?”.我习惯在主要之前声明程序的所有功能()函数,然后在main()函数之后定义它们.我错了吗?
解决方法
当您使用未声明的display()时,编译器会隐式声明它就像返回int一样.
当编译器最终看到display()的定义时,它会看到返回类型为void,但它已经假设它是int,因此定义和隐式声明不同,因此错误/警告.