有关浮动和放大器的错误Int in C Method

时间:2015-02-16 01:17:15

标签: c methods compilation int

所以我试图在C中用一个方法编写一个基本程序,但在编译程序时一直遇到错误,这是由于我的方法原因所致

我不断收到错误

curve.c: In function ‘compute_curve’:
curve.c:32:7: error: argument ‘f’ doesn’t match prototype
 float compute_curve(f)
       ^
curve.c:6:7: error: prototype declaration
float compute_curve(float);

我对这些编译内容感到很陌生,所以只是好奇我在哪里搞砸了浮动和内部的

3 个答案:

答案 0 :(得分:0)

您的原型需要声明变量名称,就像float compute_curve(float x)一样,您的实际实现定义也应该与之匹配。

答案 1 :(得分:0)

float compute_curve(float f)

f本身没有命名类型,“float”确实如此。原型使用“float”,这使你的编译器给你一个关于不匹配的声明的错误,而不是“f”不是一个类型,我假设。

答案 2 :(得分:0)

这是编译器引发的重要警告(需要修复)

函数中的

:main()    - 返回类型默认为int

函数中的

:compute_curve()    - 参数'f'默认为int    - 参数'f'与原型不匹配    - 控制到达非空函数的结尾

以下是代码应该是什么样子

(适当的缩进和错误检查)

#include <stdio.h>
#include <stdlib.h>
FILE *fp;


void compute_curve(float);

int main()
{
    float f = 1.0f;

    if(NULL == (fp = fopen("Curve", "w") ) )
    { // then, fopen failed
        perror( "fopen for Curve failed");
        exit( EXIT_FAILURE );
    }

    // implied else, fopen successful

    printf("Hello");

    while (f != 0.0f)
    {
        printf("Input a Float value(0 to quit): ");
        if( 1 != (scanf("%f", &f) ) )
        { // scanf failed
            perror( "scanf for float value failed" );
            fclose( fp ); // cleanup
            exit( EXIT_FAILURE );
        }

        // implied else, scanf successful

        compute_curve(f);
    } // end while

    fclose(fp); // cleanup
    return 0;
} // end function: main


void compute_curve(float f)
{
    int n;

    for (n = 0; n<4096; n *= 2)
    {
        float Speedup = 1.0f / (( 1.0f - f ) + (f / (float)n));
        fprintf(fp, "%d\n",n) ;
        fprintf(fp, "%f\n", Speedup) ;
    } // end for
} // end function: compute_curve