#include<stdio.h>
#include<math.h>
int main(void){
double a=0,r=0,n=0;
printf("Enter Constant a:");
scanf("%lf",&a);
printf("Enter Constant r:");
scanf("%lf",&r);
printf("Enter Variable n:");
scanf("%lf",&n);
double an;
an = geom_rec(a,r,n); // Line 15
return 0;
}
double geom_rec(double a,double r,double n){ // Line 20
double ans=a;
return a;
}
错误:
Line 20: error: conflicting types for 'geom_rec'
Line 15: error: previous implicit declaration of 'geom_rec' was here
答案 0 :(得分:12)
您忘了为该功能创建原型。
在main
函数之前添加以下内容(您也可以将整个函数移到main
之上):
double geom_rec(double a,double r,double n);
如果您调用之前未定义或原型化的函数,编译器会假定它返回int
- 这与您的实际返回类型冲突。
答案 1 :(得分:4)
您可以在main()
之前为函数设置原型,也可以将函数本身放在main()
之前。
答案 2 :(得分:0)
当编译器到达第15行时,它之前没有看到函数geom_rec
,所以假设函数返回int
。
稍后,在第20行,您将函数定义为返回double
并接受3个double
参数,这与编译器“知道”函数的内容不同。所以它抱怨,让你有机会为之前的功能定义一个合适的原型。