0

このエラーが何を意味するのかを調べましたが、私が知る限り、呼び出そうとしている関数の名前と競合していることを意味します (名前は別の関数によって既に使用されているため、混乱が生じます)。ただし、関数名を変更してもエラーは解決しません。

さて、私が名前をつけるのが下手なのか、運が悪かったのかと思われるかもしれませんが、私はこの関数の名前を 5 回ほど変更し、そのたびにより具体的な名前を使用しています。現在、「final_distancexxxx」であり、まだそのエラーが発生しています。

これは私が持っている機能のセットアップです:

float final_distancexxxx (float max_v, float a, float t){
    float d = 0;
    float t_max = 0;
    max_v = 0;
    a = 0;
    t = 0;

    t_max = max_v/a;

    if (t>t_max)
        d = (max_v/2)*t_max+(t-t_max)*max_v;
    else
        d = ((t*a)/2)*t;
    return d;
}

main (){
    float d = 0;
    float max_v = 0;
    float a = 0;
    float t = 0;
    float t_max = 0;
    float max_v2 = 0;
    float a2 = 0;
    float d_final = 0;
    float d_final2 = 0;

    printf("Please input acceleration for vehicle 1: ");
    scanf("%f", & a);
    printf("Please input max velocity for vehicle 1: ");
    scanf ("%f", & max_v);
    printf("Please input acceleration for vehicle 2: ");
    scanf("%f", & a2);
    printf("Please input max velocity for vehicle 2: ");
    scanf ("%f", & max_v2);
    printf ("Please enter race time: ");
    scanf ("%f", t);

    float final_distancexxxx (max_v, a, t);
    d_final = d;

    printf ("%f, ", d_final);
}

私が持っているかもしれない他の間違いを無視してください。私はこのエラーを修正し、残りを理解しようとしています.

4

6 に答える 6

4

この問題は、関数名とは関係ありません。この行に余分なものがありますfloat

float final_distancexxxx (max_v, a, t);

消して。あなたはおそらく次のことを意味していました:

d = final_distancexxxx (max_v, a, t);
于 2013-06-19T16:53:36.057 に答える
1

関数内の変数「d」は、final_distancexxxx内のものとは異なるスコープを持っていますmain。それらはメモリ内の同じ場所を表していません。したがって、これがコンパイルされたとしても、 と言うd_final = dと、変数dは初期化されていません。

あなたがしたいことは、関数の戻り値を保存することです:

d_final = final_distancexxxx (max_v, a, t);
于 2013-06-19T16:55:19.063 に答える
0
float final_distancexxxx (max_v, a, t);

これは、 ではmain()、呼び出しではなく関数宣言と見なされます。

ここで、コンパイラはint変数を引数としてfinal_distancexxxx取る関数の宣言として取り、関数定義と競合するため、エラーが発生します。max_v, a, tfloat final_distancexxxx (float max_v, float a, float t){..}

次のように変更します。

final_distancexxxx (max_v, a, t);

または、戻り値を変数に割り当てます。

于 2013-06-19T16:56:59.043 に答える
0

変化する

float final_distancexxxx (max_v, a, t);
d_final = d;

 d_final = final_distancexxxx (max_v, a, t);
于 2013-06-19T16:57:56.457 に答える
0

関数呼び出し時に float キーワードを削除してください!
コンパイラはそれを宣言と見なし、一致しない 複数の宣言エラーを出します!

final_distancexxxx (max_v, a, t);->関数呼び出し

float final_distancexxxx (max_v, a, t); 関数宣言

最初のものをメインで使用してください!

于 2013-06-19T16:58:32.990 に答える