我刚开始学习C++编程,我需要在我的VS 2010项目中使用Thread类。我找到了这个参考文献,但是当我尝试以下操作时:
#include <thread>
在 VS 2010 中,出现了“错误:无法打开源文件“thread””。我知道需要以某种方式“激活”c++11标准,但我甚至不知道从哪里开始。
那么,我应该怎么做才能在 Visual Studio 2010 中使用 c++11 标准呢?
我刚开始学习C++编程,我需要在我的VS 2010项目中使用Thread类。我找到了这个参考文献,但是当我尝试以下操作时:
#include <thread>
在 VS 2010 中,出现了“错误:无法打开源文件“thread””。我知道需要以某种方式“激活”c++11标准,但我甚至不知道从哪里开始。
那么,我应该怎么做才能在 Visual Studio 2010 中使用 c++11 标准呢?
std::thread
很明显在 VS 2010 中不存在。我认为它是在 VS 2012 中添加的,这也得到了这个问题和答案的支持。你使用2010而不是支持更多C ++11部分的最新版本2013是否有特定原因?
还要注意的是:与 GCC 相反,MSVC 没有较新标准的“选择加入”功能。只要实现了,它就可以直接支持它们。
std::regex
)。 - Mario这是我自己发现的情况。
要在Visual Studio中“激活”c++11,您需要将项目->属性中的“平台工具集”设置为v110或更高版本。这样,Visual Studio就可以理解它应该使用c++11功能。
但是!
Visual C++编译器不完全兼容C++11。自Visual Studio 2010以来,已支持C++11功能并逐步增加。即使下一个版本的Visual Studio也不会提供完全的C++11兼容性。
Marius Bancila
因此,在Visual Studio 2012中,<thread>
(和<future>
)可以正常工作。
正如我所建议的那样,在vs2010中无法将Platform Toolset设置为v100以上,因此无法“激活”c++11。
结论: 要在Visual Studio中使用c++11标准功能,您需要使用支持Platform Toolset v110及以上版本的2012及更高版本。
如果我有误,请纠正我!
d= (◕‿↼ ) C++11
已默认启用,但不幸的是,即使是"Visual Studio 2017"也没有完全符合 C++11
标准。
(我在构建 Boost 过程中遇到了这个问题,他们构建部分只提到需要符合
C++11
标准的编译器,并未声明在哪个MSVC
版本上测试过 Boost。)
微软表示:
"支持 C11 和 C17 标准的功能已经在 Visual Studio 2019 版本 16.8 及更高版本中可用"
但我还没有测试过他们的说法。
<thread>
在VS2012中被添加,然后在VS2013中进一步扩展。因此,如果你想启用<thread>
,你要么需要升级你的IDE,要么使用另一个编译器。 - stellarossa