【问题标题】:disable c++11 features in vs2013在 vs2013 中禁用 c++11 功能
【发布时间】:2014-04-30 11:07:39
【问题描述】:

在 vs 2013 中编写代码时,有没有办法禁用 c++11 功能,我希望我的代码也能在 vs2008 等旧版本上编译。

我厌倦了通过以下方式进行更改: 项目->属性->通用->平台工具集,并更改“Visual Studio 2013 (v120)” 旧的东西,但这是我在下拉菜单中唯一的东西。

【问题讨论】:

  • 为什么不干脆不使用任何 C++11(或更新的)特性?
  • 我是 c++ 新手,我无法判断每个功能是否是 c++11 功能。
  • 那我可以推荐a good reference site吗?它清楚地显示了 C++03、C++11 或 C++14 的特性、类和函数。但是,最好的方法是使用较旧的(没有 C++11 或更高版本的支持)来编译您的程序。
  • 对于 g++/clang,C++98/03 和 C++11 之间存在 ABI 差异,因此链接使用不同 C++ 标准编译的对象是非法的。不知道VS。
  • 为什么不用VS2008?

标签: c++ c++11 visual-studio-2013


【解决方案1】:

你不能。

很遗憾,您无法在 Visual Studio 中禁用 C++11 功能并降级到 C++03 或 C++98。可以看看哪些特性属于C++11herehere,尽量不要用。

不过更好的选择是使用旧的 VS 版本,以确保不使用任何新功能。

就我个人而言,我在 Windows 中使用 MinGW/GCC,我可以通过使用编译器开关 -std=c++03-std=c++98 或不使用 -std=c++11 来禁用 C++11。

【讨论】:

    【解决方案2】:

    如果您安装了其他版本的 Visual Studio,则可以选择较旧的工具集。这可能会有所帮助。

    恕我直言,更好的解决方案是设置一个持续集成服务器,为所有受支持的编译器、配置和平台构建代码。一旦你做了一些不受支持的事情,你就会得到构建中断。理想情况下,CI 服务器还会运行您的所有单元测试,以便您还可以查看是否有任何配置破坏了您的测试。

    【讨论】:

    • 我将 VS 2008 与 2013 并排安装,并且知道我可以从下拉列表中选择 vs2008。帮助
    【解决方案3】:

    Visual Studio 2015 Update 3 引入了两个新开关(/std:c++14 和 /std:c++latest),让您可以控制要在项目中使用的 C++ 编程语言的版本。在此更新中,如果您指定的语言版本不是其中任何一个,编译器将忽略该开关(带有警告)并默认为 C++14。

    https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/

    【讨论】:

      【解决方案4】:

      要么使用允许显式设置使用标准的编译器(Clang 和 GCC 允许选择标准版本),要么让自己熟悉 C++11 中的更改,以便在代码中避免它们。

      如果您需要参考:http://en.cppreference.com/w/ 侧面清楚地显示了在哪个标准版本中引入了某个功能。

      【讨论】:

      • 在尝试编写 C++03 代码时,很容易错误地使用 C++11 功能。例如,C++03 中的 std::vector 要求元素为 Copy-AssignableCopy-Constructable,而 C++11 删除了这些限制。所以在某些情况下,说“避免 C++11 特性”与“避免编写错误”一样无用。
      【解决方案5】:

      将 Visual Studio 配置为使用不支持 C++11 功能的其他编译器。 Intellisense 仍将显示 C++11 功能,但您可以在检入本地编译之前发现问题。

      How to use GCC with Microsoft Visual Studio?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-31
        • 1970-01-01
        • 2012-05-11
        • 1970-01-01
        • 2013-04-14
        • 1970-01-01
        • 2011-04-01
        相关资源
        最近更新 更多