Параметры для atan2 () неверны в VS2005?

Кажется, есть ошибка в math.h Заголовок предоставляется Visual Studio 2005.

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

Решение

Не стоит беспокоиться о разнице, которая не оказывает никакого влияния.

Компилятор (по сути) игнорирует имена аргументов atan2() потому что это не определение (то есть реализация функции). Пока определение функции (реализация) вычисляет арктангенс в радианах первого аргумента, деленного на второй, реализация atan2() верно.

Важно избежать ошибки в этом определении atan2f() является то, что первый и второй аргумент передаются atan2() в том же порядке. Что происходит, так (при условии определения atan2() правильно) нет функционального недостатка и выражения atan2f(a,b) вычислит арктангенс a/b — это то, что требует стандарт.

Единственный потенциальный недостаток в понимании людьми того, что делают функции. Но, вообще говоря, желательно, чтобы люди обращались к документации стандартных функций для понимания, а не к заголовочным файлам. Это стилистический недостаток, а не функциональный.

0

Другие решения


По вопросам рекламы [email protected]