繁体   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