12

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

#include <thread>

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

那么在visual studio 2010中使用()c++11标准应该怎么做呢?

4

5 回答 5

10

std::thread显然VS 2010中没有。我认为它是与VS 2012一起添加的,这也是由this question and answer支持的。您使用 2010 而不是最新版本 2013 是否有任何具体原因,它支持 C++11 的更多部分?

另请注意:与 GCC 不同,MSVC 没有“选择加入”新标准。就实现而言,它只是开箱即用地支持它们。

于 2013-11-08T10:57:11.660 回答
7

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

于 2013-11-08T11:03:09.140 回答
3

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

于 2013-11-08T10:57:10.567 回答
3

这是我自己发现的。

要在 Visual Studio 中“激活”c++11,您需要将 project->properties 中的“Platform Toolset”设置为 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 及更高版本。

如果我错了,请纠正我!

于 2013-11-11T10:40:23.507 回答
0

d= (◕‿↼ )C++11默认启用,但不幸的是,甚至“Visual Studio 2017”都不是完全C++11兼容的。

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

微软说:

“Visual Studio 2019 版本 16.8 及更高版本提供对 C11 和 C17 标准的支持”

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

于 2022-01-14T12:16:13.087 回答