Математический интерфейс vs cMath в C++
интерфейс моей системы сборки MacOS 10.6.3 для математической библиотеки POSIX-это math.h, однако в моей целевой системе имя файла интерфейса-cmath.h. В школе мы используем cmath, и я хотел бы быть уверен, что мой проект компилируется, когда он передается, как это достигается. Серверы и рабочие станции в школе являются x86 под управлением Windows XP. GCC доступен на обеих платформах.
1 ответов
в стандарте C++ функции математической библиотеки определяются в двух заголовках:
<cmath>
содержится в пространстве имен std
(например,std::sin
), а
<math.h>
содержит их в глобальном пространстве имен (так что просто sin
).
есть и другие различия между ними: while <math.h>
содержит все математические функции C с различными именами для различных типов, таких как
double sin(double);
float sinf(float);
long double sinl(long double);
etc., <cmath>
содержится перегружен такие функции, как
namespace std {
double sin(double);
float sin(float);
long double sin(long double);
}
etc. (Библиотеки C++ могут дополнительно экспортировать sinf
С <cmath>
, но вы не можете полагаться на это в портативной программы.)
наконец,fabs
, fabsf
и fabsl
функции из стандартной библиотеки C стали перегрузками std::abs
на <cmath>
.
хотя оба заголовка находятся в стандарте, вы действительно должны предпочесть <cmath>
, as <math.h>
только для обратной совместимости с pre-standard C++ и С.
нет такой вещи, как <cmath.h>
в стандартном C++.