Visual Studio 2005提供的math.h
标头中似乎存在错误。
double __cdecl atan2(__in double _Y, __in double _X);
inline float atan2f(__in float _X, __in float _Y)
{return ((float)atan2((double)_X, (double)_Y)); }
atan2f()函数的参数似乎相反。
我不确定Visual Studio的更高版本是否会出现这种情况。有谁知道这里的分数是什么?
答案 0 :(得分:0)
没有影响的差异不值得担心。
编译器(实际上)忽略atan2()
的参数名称,因为它不是定义(即函数实现)。只要函数定义(实现)计算第一个参数除以第二个参数的弧度的反正切值,atan2()
的实现就是正确的。
避免atan2f()
定义中的错误的重要一点是,第一个和第二个参数以相同的顺序传递给atan2()
。这种情况正在发生,所以(假设atan2()
的定义是正确的)没有功能缺陷,表达式atan2f(a,b)
将计算a/b
的反正切 - 这是标准所要求的。< / p>
唯一潜在的缺陷是人类理解功能的作用。但是,一般来说,建议人们参考标准函数的文档来理解而不是头文件。这是一个风格上的缺陷,而不是功能性缺陷。