我为Solaris 8 sparc构建了gcc 4.6.1。我正在编译一些使用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标头,它根据是否定义了_GLIBCXX_USE_C99_MATH有条件地定义了std :: signbit。我运行了cpp -dM,我发现没有定义_GLIBCXX_USE_C99_MATH。有没有办法启用C99支持?我是否必须重建libc或者这个平台太旧了?我不在我的元素中,所以任何关于这项工作的指导都会很棒。
答案 0 :(得分:2)
您的平台C库可能太旧,无法支持添加C99 FP库。
注意 - 虽然编译器默认支持列出的C99功能 下面是
/usr/include
中Solaris软件提供的标准头文件 尚未符合1999 ISO / IEC C标准。如果有错误消息 遇到,尝试使用-xc99=none
获得1990 ISO / IEC C标准 这些标题的行为。