我在FreeBSD10.1上安装了gcc49。我正在尝试将其用于C++ 11开发。然而,每一次我编译一些C++ 11的有效代码(是的,我用-std=c++11
)使用特定的数学函数,它吐出来的错误,如g ++包含freebsd上的路径
error: std::round is not a member of std
/usr/include/math.h
例如,在这里:
#include <cmath>
#include <iostream>
int main()
{
std::cout << std::round(10.1) << std::endl;
}
所以看起来它试图使用旧包括在FreeBSD来对应于新gcc
文件,而不是那些从/usr/local/lib/gcc49/include
我试图设置CPLUS_INCLUDE_PATH
到/usr/local/lib/gcc49/include
没有运气,系统仍尝试搜索/usr/include
。
我看到了,这可能是在FreeBSD的G ++的一个bug, Getting GCC in C++11 mode to work on FreeBSD 然而,即使使用-D_GLIBCXX_USE_C99
为https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=194929 建议不能解决问题的数学函数。
最奇怪的是,我可以编译任何其他C++ 11功能不从<cmath>
,像std::stol
,但必须使用-D_GLIBCXX_USE_C99
标志作为上述错误报告提及。
任何想法如何使Free ++ 10.1上的C++ 11充分发挥g ++的作用?
你问C++ 11吗? – Deduplicator 2015-02-09 17:11:27
@Deduplicator是的,我需要C++ 11支持 – vsoftco 2015-02-09 19:51:33
@mvw,我试过,同样的问题,它似乎无法识别C++ 11标准库的数学部分 – vsoftco 2015-02-09 19:52:14