【问题标题】:How to compile with VS2017 for an older C++ standard?如何使用 VS2017 编译旧的 C++ 标准?
【发布时间】:2019-05-28 09:55:38
【问题描述】:

我正在使用 Visual Studio 2017,需要创建与 VS2008(C++03 或 C++98)兼容的代码。是否有将 MSVC 限制为 C++03 功能的开关?

我正在使用 CMake 并尝试设置

set_property(TARGET tgt PROPERTY CXX_STANDARD 98)

但这似乎只是为了确保编译器支持 C++98 或更高版本。

任何检查 C++ 代码是否使用比 VS2008 支持的功能更新的功能的解决方案都可以正常工作。我只需要确保我不会意外使用太新的功能。

【问题讨论】:

  • 不需要兼容。我只需要确保我不使用旧版本不支持的功能。

标签: c++ cmake visual-studio-2017 c++98


【解决方案1】:

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-without-upgrading-your-toolset/

这样您就可以确定您的代码可以在旧工具集上编译,同时使用最新的 IDE。

【讨论】:

    猜你喜欢
    • 2016-04-01
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2021-06-03
    • 2014-04-27
    • 1970-01-01
    相关资源
    最近更新 更多