函数定义中带有double的类型冲突

时间:2018-04-07 06:26:29

标签: c

我收到错误"' abs'在我的功能。 代码非常简单。

double abs (double x) {  // Returns absolute value
if (x<0)
    return (x*(-1));
else
    return x;
}

这是关于代码块的C项目。 我已经尝试过铸造退货,但错误仍然存​​在。

2 个答案:

答案 0 :(得分:5)

我的猜测是,您已<stdlib.h>已包含,因为abs已在此处声明且签名为int abs(int),因此您的定义会产生&#34;冲突的类型&#34;。

答案 1 :(得分:4)

问题不在于您的代码本身。相反,还有另一个已定义的函数名为abs(),具有不同的原型 - 可能在整数上运行。与C ++不同,C不允许函数重载。

我建议您使用fabs()中的math.h。它不仅已经存在,而且通常会编译为单个FPU指令而不是调用和条件分支。

还有fabsf()fabsl()分别在floatlong double上执行相同的操作。要使用这些,您可能需要选择C99或C11模式,因为这些功能未在原始ANSI标准中指定。