如何在Visual Studio 2010中"activate" c ++ 11标准?

How to "activate" c++11 standard in visual studio 2010?

本文关键字:activate 标准 Visual Studio 2010      更新时间:2023-10-16

我是 c++ 编程的新手,我需要在我的 VS 2010 项目中使用 Thread 类。我找到了这个参考,但是当我尝试以下内容时:

#include <thread>

VS 2010显然告诉我"错误:无法打开源代码文件"线程"。我知道我需要以某种方式"激活"c ++ 11 标准。我什至不知道从哪里开始。

那么我应该怎么做才能在Visual Studio 2010中使用()c++11标准呢?

std::thread显然不在VS 2010中。我认为它是在VS 2012中添加的,这个问题和答案也支持它。您是否使用 2010 而不是最新版本 2013,后者支持 C++11 的更多部分?

另请注意:与GCC相反,MSVC没有对新标准的"选择加入"。就实施而言,它只是开箱即用地支持它们。

Visual C++

编译器不完全兼容C++11。自Visual Studio 2010以来,C++11功能一直得到支持,并且是逐步添加的。即使是下一版本的Visual Studio也不会提供完全的C++11兼容性。可以在此处找到不同版本的Visual Studio中可用的C++11功能矩阵:

  • VC10 中的 C++0x 核心语言功能:表
  • C++11 Visual C++ 11 中的功能
  • C++11/14 VS 2013 中的 STL 功能、修复和重大更改

> 默认情况下启用 C++11,但在 VS 2010 中实现的功能并不多。C++11标准库在VS 2010中缺少许多标头。以下是有关 C++11 支持的最后几个 VS 版本的比较。

这是我

自己发现的。

要在Visual Studio中"激活"c ++ 11,您需要将项目>属性中的"平台工具集"设置为v110或更高版本。所以这就是Visual Studio理解它应该使用c ++ 11功能的方式。

但!

Visual C++ 编译器不完全兼容 C++11。自Visual Studio 2010以来,C++11功能一直得到支持,并且是逐步添加的。即使是下一个版本的Visual Studio也不会提供完全的C++11兼容性。

马吕斯·班西拉

所以它在Visual Studio 2012中适用于<thread>(和<future>)。

正如我建议的那样,不可能在 vs2010 中将平台工具集设置为 v100 以上,因此不可能在 vs2010 中"激活"c++11。

结论:若要在 Visual Studio 中使用 C++11 标准功能,需要使用支持 Platform Toolset v110 及更高版本的 2012 及更高版本。

如果我错了,请纠正我!

d= (◕‿↼) C++11默认启用,但不幸的是,即使是"Visual Studio 2017"也不完全C++11兼容。

(我在构建Boost时来到这里,其中的构建部分只提到他们需要C++11兼容的编译器,而不是他们Boost测试MSVC版本。

Microsoft 说:

"Visual Studio 2019 版本 16.8 及更高版本中支持 C11 和 C17 标准"

但我还没有测试他们的说法。