我在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