2012-04-18 70 views
0
#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 

回答

12

你忘了创建函数的原型。

main功能之前,将下面的(你也可以移动上述main整体功能):

double geom_rec(double a,double r,double n); 

如果调用没有定义或之前原型的函数,编译器假定它返回int - 这与您的实际返回类型冲突。

+5

+1值得说明默认'int'返回类型。 – hmjd 2012-04-18 15:14:26

+0

:P thx,即时通讯只是在我的课堂上学习,我有时会忘记这些事情。 THX如此! – user1082764 2012-04-18 15:15:32

+0

哎哟,那个答案的分数让我意识到它实际上让我的零代表增加:p – ThiefMaster 2012-04-18 15:17:46

4

您可以在main()之前放置该功能的原型,也可以在main()之前放置该功能本身。

0

当编译器到达第15行时,它之前没有看到函数geom_rec,所以它假定函数返回int

之后,在第20行中,将函数定义为返回double并接受3 double参数,这与编译器“知道”函数的不同有关。所以它抱怨说,让你有机会在之前使用它来定义功能的正确原型。