我是 C++ 编程的新手,我需要在我的 VS 2010 项目中使用 Thread 类。我找到了这个参考,但是当我尝试以下操作时:
#include <thread>
VS 2010 显然告诉我'错误:无法打开源文件“线程”'。我知道我需要以某种方式“激活”c++11 标准。我什至不知道从哪里开始。
那么在visual studio 2010中使用()c++11标准应该怎么做呢?
我是 C++ 编程的新手,我需要在我的 VS 2010 项目中使用 Thread 类。我找到了这个参考,但是当我尝试以下操作时:
#include <thread>
VS 2010 显然告诉我'错误:无法打开源文件“线程”'。我知道我需要以某种方式“激活”c++11 标准。我什至不知道从哪里开始。
那么在visual studio 2010中使用()c++11标准应该怎么做呢?
std::thread
显然VS 2010中没有。我认为它是与VS 2012一起添加的,这也是由this question and answer支持的。您使用 2010 而不是最新版本 2013 是否有任何具体原因,它支持 C++11 的更多部分?
另请注意:与 GCC 不同,MSVC 没有“选择加入”新标准。就实现而言,它只是开箱即用地支持它们。
Visual C++ 编译器不完全兼容 C++11。自 Visual Studio 2010 起就支持 C++11 功能并逐步添加。甚至下一版本的 Visual Studio 也不会提供完全的 C++11 兼容性。可以在此处找到不同版本的 Visual Studio 中可用的 C++11 功能矩阵:
默认情况下启用 C++11,但在 VS 2010 中实现的功能并不多。C++11 标准库在 VS 2010 中缺少许多头文件。这是最近几个 VS 版本关于 C++11的比较支持。
这是我自己发现的。
要在 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 及更高版本。
如果我错了,请纠正我!
d= (◕‿↼ )C++11
默认启用,但不幸的是,甚至“Visual Studio 2017”都不是完全C++11
兼容的。
(我在构建时来到这里
Boost
,构建部分只提到他们需要C++11
兼容的编译器,而不是MSVC
他们测试的版本Boost
。)
微软说:
“Visual Studio 2019 版本 16.8 及更高版本提供对 C11 和 C17 标准的支持”
但我还没有测试他们的说法。