我正在尝试编译我的程序,我正在使用sqrt pow和fabs等功能。我确实包含math.h但由于某种原因我得到的错误如下:
error C2668: 'fabs' : ambiguous call to overloaded function
其他功能相同 我有这个包括:
#include "stdafx.h"
#include "math.h"
我试过包括但仍然是同样的错误。 有谁知道他们为什么不被承认? 我的文件是.cpp而不是.c但它是一个MFC项目。
谢谢
答案 0 :(得分:8)
这是因为这些函数在以下几种类型中被重载:float,double和long double。因此,如果传入一个整数,编译器就不会选择哪一个。一个简单的解决方法是简单地传递一个double(或乘以你传入的1.0),这应该可以解决问题。
int value = rand();
int result1 = (int)fabs(value*1.0);
printf("%d, %d\n", result1, result1);
否则:
int value = rand();
int result1 = (int)fabs((double)value);
printf("%d, %d\n", result1, result1);