我创建了一个简单的程序来学习如何使用线程。这是我创建的代码
#include <iostream>
#include <stdlib.h>
#include <thread>
using namespace std;
void count_asc();
void count_desc();
int main() {
thread first(count_asc);
thread second(count_desc);
first.join();
second.join();
system("pause");
return 0;
}
void count_asc(){
int ctr;
for(ctr=1;ctr<=10;ctr++){
cout<<"First thread: "<<ctr<<endl;
}
}
void count_desc(){
int ctr;
for(ctr=10;ctr>=1;ctr--){
cout<<"Second thread: "<<ctr<<endl;
}
}
我正在使用Dev C ++ 5.5.3。我已经阅读了有关此问题的其他问题,但我作为编程的初学者并不能真正理解高级指令。编译此代码时会产生以下错误
main.cpp: In function 'int main()':
main.cpp:11:2: error: 'thread' was not declared in this scope
main.cpp:11:9: error: expected ';' before 'first'
main.cpp:12:9: error: expected ';' before 'second'
main.cpp:14:2: error: 'first' was not declared in this scope
main.cpp:15:2: error: 'second' was not declared in this scope
我已经在开发者C ++的项目选项中的c ++编译器附加命令行选项中包含了-std = c ++ 11,但我仍然无法删除错误。你能检查一下我做错了什么吗?也尽可能我不想开始使用其他库,因为我很难建立它们(例如,升级)
答案 0 :(得分:1)
问题很可能是由于在TDM-GCC附带的GCC 4.7.1版本中缺乏对C ++ 11 std::thread
的支持。有关详细信息,请查看this question。您的代码可以使用GCC 4.8.1进行编译(尽管它仍然存在运行时错误):
因此,我建议您解决问题,尝试更新到更新版本的编译器。根据{{3}}和this link这样做应该是将最新版本的编译器安装到当前所在的文件夹中,或者将其安装在新文件夹中并更新设置的简单问题。在Dev C ++中指向新的编译器。
但是,由于您不熟悉C ++(以及一般的编程),因此对Dev C ++没有特别的附件,我建议您切换到更现代和广泛使用的IDE。对于Windows来说,MS Visual Studio是一个不错的选择,但是有很多开源和跨平台的IDE可用于C ++。建议初学者使用受欢迎的IDE,因为您更有可能在线找到帮助和支持的来源,并且当您遇到问题时更有可能在Stackoverflow等网站上获得答案。有很多与IDE有关的Stackoverflow问题。示例(来自Google快速搜索):