2012-04-18 6 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; 
} 

エラー:2つのダブルはどのように相反するタイプになりますか?

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

+0

:P thx、私のクラスで学ぶだけで、時々これらのことを忘れる。 THX SO MUCH! – user1082764

+0

この回答のスコアは、実際に私に代理店の増員があったことに気付いています:p – ThiefMaster

4

main()の前に関数のプロトタイプを置くか、関数自体をmain()の前に置くことができます。

0

コンパイラが15行目に到達したとき、以前には関数geom_recは見られなかったので、関数はintを返します。

後で、行20で、関数をコンパイラが関数について「知っている」ものとは異なるdoubleを返し、3 doubleの引数を受け入れるように関数を定義します。それで、それはあなたにそれを使用しての前に関数のための適切なプロトタイプを定義する機会を与えて、不平を言った。

関連する問題