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()中被视为函数声明而不是调用。

在这里,编译器将final_distancexxxx函数声明作为函数声明,该函数将int变量max_v, a, t作为参数,这与您的函数定义冲突,float 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); 函数声明

在 main 中使用第一个!

于 2013-06-19T16:58:32.990 回答
0

你不应该在main()

float final_distancexxxx (max_v, a, t);

float是返回类型,如果你希望你的函数返回一个浮点值但在主函数之外,你应该使用它,

d_final = final_distancexxxx (max_v, a, t);

我猜你想要什么,就像其他人建议的那样,你必须将函数分配给一个变量,float因为它的返回值为返回值。floatvoid

看看http://www.youtube.com/watch?v=iOS5sPivuJA(这是一个 8 分钟的视频,标题为“C 编程教程 - 11 - 进入函数”)。

于 2013-06-19T18:11:25.147 回答