在下面的程序中,我使用了 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() 函数之前,然后在 main() 函数之后定义它们。我错了吗?
最佳答案
当您使用未声明的 display()
时,编译器会隐式声明它,就好像它正在返回 int
一样。
当编译器最终看到 display()
的定义时,它看到返回类型是 void
,但它已经假定它是 int
因此定义和隐式声明不同,因此出现错误/警告。
关于c - 在我的代码中,为什么缺少函数声明对一个函数来说不是问题,但对另一个函数会发出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15756196/