C++ VS2005中atan2()的参数不正确?

C++ VS2005中atan2()的参数不正确?,c++,visual-studio-2005,atan2,C++,Visual Studio 2005,Atan2,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的更高版本是否如此。有人知道这里

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的更高版本是否如此。有人知道这里的分数是多少吗?

没有影响的差异不值得担心

编译器(实际上)忽略
atan2()
的参数名称,因为它不是定义(即函数实现)。只要函数定义(实现)计算第一个参数的弧度除以第二个参数的反正切,则
atan2()
的实现是正确的

atan2f()
的定义中,避免出现错误的重要一点是第一个和第二个参数以相同的顺序传递给
atan2()
。这种情况正在发生,因此(假设
atan2()
的定义是正确的)没有功能缺陷,表达式
atan2f(a,b)
将计算
a/b
的反正切,这是标准要求的


唯一的潜在缺陷是人类对功能的理解。但是,一般来说,建议人们参考标准函数的文档来理解,而不是头文件。这是一个风格上的缺陷,而不是功能上的缺陷。

好吧,关于它的一些讨论:。通过比较atan2f(x,y)和atan2f(y,x)的结果来检查是否有打字错误或它们的顺序确实错误。然后你就会知道:)