2016-06-15 39 views
-2

我想編譯一些C++,我從一本書中得到我正在經歷,當我嘗試編譯時,我得到這個警告後跟5個相關的錯誤。如何確保我正在使用C++ 14?

main.cpp:16:9: warning: variable templates are a C++14 extension 
[- Wc++14-extensions] 
int table<RecordType>::CAPACITY; 
    ^

我從來沒有想過更新C++或確定我使用的是什麼版本。我正在使用g ++在mac中編譯它。

回答

2

您可以用-std=c++14標誌啓用它。但是,您的GCC版本應該首先支持它。直到GCC 4.9.3,你可以使用-std=c++1y而自GCC 5.2,它也支持C++ 14標誌。欲瞭解更多信息,請參閱this

1

通過-std=c++14標誌。還有部分C++ 14支持的舊版本,目前還不支持-std=c++14;對於這些,通過-std=c++1y標誌。

1

您需要告訴編譯器編譯哪個版本的標準。
嘗試g++ -std=c++14

1

雖然其他人推薦的-std=c++14將啓用C++ 14功能支持,但它也會禁用默認啓用的一系列功能,包括對高級POSIX API的支持。

除非特別想禁用G ++的擴展,你應該使用-std=gnu++14-std=c++14

+0

我寧可建議初學者通過'-std = C++ 14'關閉擴展(並編寫可​​移植代碼),直到它們到達需要使用它們的地步。 – Pixelchemist

+0

@Pixelchemist:如果它只是語言擴展,我會同意你的看法。但是由於頭文件具有測試'_GNU_SOURCE'(應該被關閉)和'_XOPEN_SOURCE'(它不應該 - 但它是)測試的可移植性(單一Unix規範的一部分)庫函數。 –

+0

我的評論認爲:相反,如果需要,可以使用標準C++而不是擴展名,如果需要的話,只能使用擴展名(或者爲了任何其他合理原因使用擴展名)。我不認爲POSIX實際上是徹頭徹尾的*便攜式*。 – Pixelchemist