它给了我错误“'mysqrt'冲突的typer'”

时间:2014-11-08 22:34:45

标签: c xcode

#include <stdio.h>
#include <math.h>

float mysqrt (float x)

{

    float y;
    x=x-1;
    y= 1+(x/2)-(pow(x,2)/2)+(pow(x,3)/8)-(5*pow(x,4)/128);


    return y;

}

int main()

{

    printf("%f",mysqrt(5));
}

我在这个网站上搜索了较旧的答案并尝试使用它们但我仍然无法弄清楚它为什么不起作用

1 个答案:

答案 0 :(得分:0)

我认为您发布的代码非常准确。

您可能在提供函数声明之前调用mysqrt() 。在旧版本的C标准(C89)中,这是允许的,并且该函数将被赋予隐式声明:

int mysqrt();

即,一个函数采用未知数量的非可变参数,并返回int。这显然与功能的实际定义相矛盾。

在更新版本的标准(C99 / C11)中,如果您尝试调用尚未声明的函数,则需要编译器生成诊断消息。

您应该更改代码,以便在函数调用之前显示函数定义,函数调用之前提供函数声明。例如:

float mysqrt (float);

int main()
{
  printf("%f",mysqrt(5));
}

float mysqrt (float x)
{
  /* Function body */
}