Как я могу включить GLIBCXX использовать С99 на Солярис 8 СПАРК?


Я построил gcc 4.6.1 для Solaris 8 sparc. Я компилирую некоторый код, который использует boost:: lexical_cast (boost 1.48) , и я получаю эту ошибку:

boost/math/special_functions/sign.hpp: In function 'int boost::math::detail::signbit_impl(T, const boost::math::detail::native_tag&)'
      error: 'signbit' is not a member of 'std'

(также аналогичные ошибки для fpclassify, isfinite, isnormal, isinf, isnan)

Я посмотрел на заголовок cmath, и он определяет std::signbit условно в зависимости от того, определен ли _GLIBCXX_USE_C99_MATH. Я запустил cpp-dM и вижу, что _GLIBCXX_USE_C99_MATH не определен. Есть ли способ включить поддержку C99? Нужно ли мне перестраиваться? libc или эта платформа просто слишком старая? Я не в своей стихии, так что любое руководство по получению этой работы было бы здорово.

1 5

1 ответ:

Ваша библиотека платформы C, вероятно, слишком стара, чтобы поддерживать дополнения библиотеки C99 FP.

Из руководства пользователя Sun Studio 12 :

Примечание-хотя компилятор по умолчанию поддерживает перечисленные функции C99 ниже приведены стандартные заголовки, предоставляемые программным обеспечением Solaris в /usr/include do еще не соответствует стандарту ISO/IEC C 1999 года. Если сообщения об ошибках являются встретившись, попробуйте использовать -xc99=none для получения стандарта 1990 ISO / IEC C поведение для этих заголовков.