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
4

3 に答える 3

12

関数のプロトタイプを作成するのを忘れました。

関数の前に次のように配置しますmain(関数全体を上に移動することもできますmain)。

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

以前に定義またはプロトタイプ化されていない関数を呼び出すと、コンパイラはそれが返されると想定intします。これは、実際の戻りタイプと競合しています。

于 2012-04-18T15:13:22.413 に答える
4

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

于 2012-04-18T15:14:05.770 に答える
0

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

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

于 2012-04-18T15:26:31.297 に答える