错误:c程序中用户生成函数的冲突类型

时间:2014-09-20 18:19:59

标签: c

// the same error does not happen if i use int instead of float in function. 
#include <stdio.h>
#include <stdlib.h>

int main()

  {

float a;
printf("\nEnter any number");

scanf("%f",&a);

float b = sq(a);

printf("\nthe square of %f is %f",a,b);

}

float sq(float x)

{

float y;

y = x*x;

return y;

}
//error: conflicting type for sq

2 个答案:

答案 0 :(得分:4)

编译器第一次遇到sq()main()。此时,编译器无法知道函数的返回类型是什么。编译器(*)的作用是假设sq()返回int。由于函数返回float,因此该假设不正确。这会导致您看到的错误。

sq()移至main()上方,或在main()之前插入以下prototype

float sq(float x);

(*)请注意,这仅适用于pre C99编译器,因为在C99中已删除此行为。

答案 1 :(得分:0)

valid code

在GCC编译器中,我们必须在主函数调用之前放置函数