[英]C++ code compiling in minGW-W64 g++ does not compile with Ubuntu g++
我在運行Ubuntu的工作站上的Windows 10 Code :: Blocks環境中編寫的程序編譯時遇到了一些問題。
具體來說,編譯器沒有代碼問題
g++ (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 5.3.0*
而編譯器抱怨代碼是
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
后者抱怨代碼的多個部分,包括Alglib庫的各個部分和Numerical Recipes NR3庫的重載throw()定義。
我可以避免使用上面的兩個庫,但是不明白為什么我為我的一個類編寫的has函數存在問題。 它給了我一個
錯誤:'type name'聲明為返回函數的函數
為線
for(auto& P : n) res = res ^ ((std::hash<double>()(double(int(P))) ) << ct++ );
其中n是整數的stl向量和類的成員。 所以我的問題是:
為什么Ubuntu g ++編譯器不遵循與MinGW g ++相同的標准? (並且可以在Ubuntu上更改為某些版本的g ++,它遵循相同的標准)
關於哈希函數中的行的含糊不清(哈希函數的效率/質量目前並不重要)
您將此問題標記為c ++ 11,因此我假設您正在編譯該標准。 g++-4.8
是第一個完全支持c ++ 11的版本,但它仍被描述為“實驗性”。 https://gcc.gnu.org/gcc-4.8/cxx0x_status.html 。 此外,我認為當時標准庫支持也不完整。
g++-4.9
是支持首先變得非常好的地方,所有部分都已到位並且主要缺陷是固定的。
如果您正在運行Ubuntu老謀深算,默認g++
版本是5.3
與您的MinGW的。
如果您使用的是較舊的Ubuntu,則可以添加toolchain/test
apt-repository並下載g++-4.9
或更高版本。
以下是如何執行此操作的一些說明:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g++-4.9
參考: https : //askubuntu.com/questions/428198/getting-installing-gcc-g-4-9-on-ubuntu
要提供有關錯誤的具體信息,您需要顯示更多代碼。 這聽起來像某種語法錯誤,但很難說它是由語言特性,標准庫元素或組合引起的,基於您展示的小代碼。
另一種選擇是在舊的Ubuntu上使用clang++
。 clang-3.6
在我的經驗中對C ++ 11有很好的支持,並且比當代gcc
版本更快地被Ubuntu所接受,所以你可以使用它並讓你的項目在沒有添加toolchain-r/test
情況下進行編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.