簡體   English   中英

如何使用VS2017編譯較舊的C ++標准?

[英]How to compile with VS2017 for an older C++ standard?

我正在使用Visual Studio 2017,並且需要創建與VS2008兼容的代碼(C ++ 03或C ++ 98)。 是否有將MSVC限制為C ++ 03功能的開關?

我正在使用CMake並嘗試設置

set_property(TARGET tgt PROPERTY CXX_STANDARD 98)

但這似乎只能確保編譯器支持C ++ 98或更高版本。

任何可以檢查C ++代碼是否使用比VS2008支持的功能更新的功能的解決方案也可以使用。 我只需要確保我不會意外使用太新的功能。

MSVC僅在VS2015的更新之一(確切地說是更新3)中獲得了標准開關,該更新或多或少與C ++ 14兼容,因此,只有從C ++ 14開始的標准開關(加上一些)。更新時已實現的最新功能)。 無條件地啟用了所有較舊的功能,以實現向后兼容(並且由於進行所有工作以對先前的標准進行改造,而實際上卻沒有任何收益)。

有關更多信息,請參見此博客文章: https : //devblogs.microsoft.com/cppblog/standards-version-switches-in-the-compiler/

另外,請注意,新版本的MSVC中有很多一致性改進,因此即使使用std開關,您也可以編寫在舊編譯器上不起作用或表現不同的代碼。

更好的解決方案是僅使用VS2017 visual studio中的VS2008工具集,如此處所述: https ://devblogs.microsoft.com/cppblog/stuck-on-an-older-toolset-version-move-to-visual-studio -2015-沒有-升級,您的工具集/

這樣,您可以確定在使用最新IDE的同時,您的代碼可以在較舊的工具集上進行編譯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM