我试图在C中构建一个非常简单的程序,它从函数返回一个浮点值,但由于某种原因我得到了一个错误。
#include<stdio.h>
int main(){
double returning;
returning = regre();
printf("%f", returning);
return 0;
}
double regre(){
double re = 14.35;
return re;
}
我得到的错误是:
'regre'的冲突类型
此前隐含的regre声明就在这里
答案 0 :(得分:7)
该错误消息正在告诉您究竟发生了什么 - 存在regre
的隐式声明,因为您在main()
之后才定义它。只需添加一个前向声明:
double regre();
在main()
之前,或者只是将整个功能移到那里。
答案 1 :(得分:2)
previous implicit declaration of `regre` was here
如果函数未知,则编译器默认将其视为int functionname()
。在您的情况下,int regre()
将在此处声明。
conflicting types for 'regre'
当您注意到实际功能double regre()
时,会发生此冲突错误。要解决此问题,应在实际使用之前声明双重regre()函数。
#include<stdio.h>
double regre(); //Forward Declaration
int main(){
double returning;
returning = regre();
printf("%f", returning);
return 0;
}
double regre(){
double re = 14.35;
return re;
}
有关前瞻性声明的更多信息,请参阅以下链接。
答案 2 :(得分:0)
在C中,无论是通过值调用还是通过引用调用函数,默认情况下这些函数都是int类型。当您使用任何类型的函数时,您需要在调用该函数之前在程序中定义函数原型。 最好的方法是在主要自我之前定义所有函数原型,这是编程的好方法。 来到你的程序只需将原型定义为double regre();主要是
double regre();
main()
{