所以我试图在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);
我对这些编译内容感到很陌生,所以只是好奇我在哪里搞砸了浮动和内部的
答案 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