如何在Visual Studio 2010中“启用”C++11标准?

12

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

#include <thread>

在 VS 2010 中,出现了“错误:无法打开源文件“thread””。我知道需要以某种方式“激活”c++11标准,但我甚至不知道从哪里开始。

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


6
<thread>在VS2012中被添加,然后在VS2013中进一步扩展。因此,如果你想启用<thread>,你要么需要升级你的IDE,要么使用另一个编译器。 - stellarossa
1
你不觉得在一个名为2010的产品中想要2011标准支持会引起警觉吗? - David Heffernan
1
@DavidHeffernan,那不是很相关。楼主,我认为通过一些hack技巧,你可以为你的项目设置自定义构建选项,并在mingw上使用GCC。 - Codecat
1
@AngeloGeels 使用mingw有什么相关性吗? - David Heffernan
2
由于GCC几乎完全支持C++11,所以是的。 - Codecat
5个回答

10

std::thread 很明显在 VS 2010 中不存在。我认为它是在 VS 2012 中添加的,这也得到了这个问题和答案的支持。你使用2010而不是支持更多C ++11部分的最新版本2013是否有特定原因?

还要注意的是:与 GCC 相反,MSVC 没有较新标准的“选择加入”功能。只要实现了,它就可以直接支持它们。


1
VS 2012和2013往往显示其不稳定性。此外,VS 2010具有宏,而更新版本则没有。 - Codecat
1
宏?到目前为止,我也从未遇到过2012/2013的任何问题(除了2012年中断的std::regex)。 - Mario
2
2012/2013在处理大型项目时需要更多的资源,相比之下2010则少得多,这使得每隔几个小时就需要重启IDE。宏:http://msdn.microsoft.com/en-us/library/b4c73967%28v=vs.100%29.aspx - Codecat
1
从未听说过这样的问题,也从未真正接触过IDE宏。但是除此之外,如果您担心较新的IDE,仍然可以在现有安装的情况下并行安装较新版本(完整IDE或仅平台SDK),然后从项目设置中选择此作为不同的编译器(我认为是在MSVC 2010中引入的)。 - Mario
我使用2010是因为特定的程序会生成vs2010的源代码和解决方案文件。该程序有一个选项可以生成2012版本的文件,但我已经在我的计算机上安装了2010,所以没有尝试使用2012,因为这是不必要的(需要线程类)。现在我正在获取并安装2012和2013版本来检查您的答案。 - J. Leeroy
令人惊喜的是,在微软漫长的历史中,他们这一次并没有要求用户选择加入某个深藏八层的东西 :) - MarcusJ

7

3

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


3

这是我自己发现的情况。

要在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及更高版本。

如果我有误,请纠正我!


0

d= (◕‿↼ ) C++11 已默认启用,但不幸的是,即使是"Visual Studio 2017"也没有完全符合 C++11 标准。

(我在构建 Boost 过程中遇到了这个问题,他们构建部分只提到需要符合 C++11 标准的编译器,并未声明在哪个 MSVC 版本上测试过 Boost。)

微软表示:

"支持 C11 和 C17 标准的功能已经在 Visual Studio 2019 版本 16.8 及更高版本中可用"

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接