0

我需要问一下 netbeans 7.1.1 中是否支持 c++11(将库用作线程,chrono)。

我有这个代码: -

#include<thread>
#include<chrono>
while(true)
{
std::this_thread::sleep_for(std::chrono::seconds(1));   <- there is an error at 
"this_thread" 

test4();
}

实际上我正在做一些在每分钟之后调用这个函数的东西(我的意思是当系统时间改变一分钟时)

谢谢

4

2 回答 2

5

三件事(编译器、IDE 和操作系统)在这里都很重要。

1) 编译器:GCC 4.6 已经有很好的 C++11 支持并且有<thread><chrono>头文件。但是你必须用-std=c++0x. 如果您使用 IDE,则必须将其配置为生成这样的 make(因此请检查编译器选项)

2) 操作系统也很重要:<thread>标头本质上是一组围绕 POSIX 概念的 ptherad、mutex 和 condition_variable 的包装器。在 Windows 上,condition_variable 仅从 0x600 (Vista) 本地存在,直到 0x505 (XP) 您必须处理本地“同步事件对象”,它们可以等效,但具有不同的语义(boost::thread实现适配器,但 GCC只是跳过整个线程实现:因此...如果您正在为更多操作系统编写代码,请检查您是否正在使用所有操作系统上都存在的库实现!)

3) IDE 也有它的重要性:编辑器解析文本和显示完成信息的方式,以及“键入时语法错误”等不取决于编译器,而是取决于他们使用的解析器。特别是,当 GCC 配置为 -std=c++0X 时,它假定__GXX_EXPERIMENTAL_CXX0X__符号的隐式定义,这不是 IDE 自动假定的(错误地解析标头)您还必须配置 IDE 以考虑__GXX_EXPERIMENTAL_CXX0X__解析时符号为“已定义”。

您的问题很可能与第 3 点有关

于 2012-04-10T06:50:36.680 回答
-1

您必须询问您的编译器是否支持 C++11,而不是您的 IDE。

好吧,对于 g++,它支持 4.7 版本中的大部分 c++11 功能。

于 2012-04-10T06:03:53.847 回答