两个双打如何成为冲突类型?

时间:2012-04-18 15:11:43

标签: c

#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

3 个答案:

答案 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参数,这与编译器“知道”函数的内容不同。所以它抱怨,让你有机会为之前的功能定义一个合适的原型。