2011-10-19 40 views
8

什麼是C++11已經足夠成熟的功能,我可以開始在我的項目中安全使用。我在說的是GCC,主要是我很少需要Visual Studio。我顯然不希望在我的代碼中包含一個需要幾個月後重寫的功能。我是否應該從一開始就開始使用這些功能?因爲我們主要做的事情不是c++11 dependent我們可以在老派的方法中做所有事情和每件事情。所以我們甚至應該在這個早期階段開始使用C++ 11功能?什麼是穩定的C++ 11功能可以安全使用

+4

您定位的是哪個GCC版本,此代碼在哪裏運行,您的目標系統使用了什麼......本頁詳細介紹GCC版本中的功能何時可用:http://gcc.gnu.org/projects/cxx0x。 html – birryree

+0

我在Windows上使用MinGW I'vent檢查了該版本。和在Linux上我4.3.2然而我不知道下一次我會在哪裏放置工作。 –

+0

是那些可以更改的功能?或者他們是穩定的? –

回答

8

C++ 11標準終於完成併發布了,所以不會有任何更改。實現仍然落後一點,可能會實現C++ 0x的稍舊版本,但在更新時可能不會注意到很多差異。

C++ 11並不完全向後兼容,所以您應該做的第一件事就是從C++ 11兼容性的角度開始開發。 GCC有一個警告標誌「-WC++ 0x-compat」來幫助解決這個問題。不兼容性非常小,但這應該會導致任何問題。

一個很大的不兼容性是libstdC++的ABI隨着向C++ 11的轉移而改變,因此您還必須確保可以處理該問題。

一旦你知道安全移動,就可以開始用C++ 11模式編譯。在編寫新代碼或更改舊代碼時,您可以逐漸採用任何C++ 11功能對您有用的東西。您可能還需要考慮檢查棄用功能的使用情況,例如舊的異常規格,並將其替換爲新的功能。

有很多新東西,所以看看標準,如果你可以得到它或一些文件在線。我發現我想直接使用的大部分真正有趣的東西都在圖書館裏。不幸的是,這似乎是當前實施仍然滯後最多的地方。

0

您可能需要訪問:

http://gcc.gnu.org/projects/cxx0x.html

這個鏈接給出了不同版本的GCC中的C++ 0x的支持。

我建議你現在使用C++ 11(只需在GCC命令行中添加-std = C++ 0x)。如果你很幸運,那麼代碼中沒有什麼會改變。即使您不使用任何C++ 11功能,您仍然可以從右值引用的性能改進和移動語義中受益。

相關問題