Dev C ++简单的线程程序

时间:2013-11-11 00:52:22

标签: c++ windows gcc c++11 dev-c++

我创建了一个简单的程序来学习如何使用线程。这是我创建的代码

#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,但我仍然无法删除错误。你能检查一下我做错了什么吗?也尽可能我不想开始使用其他库,因为我很难建立它们(例如,升级)

1 个答案:

答案 0 :(得分:1)

问题很可能是由于在TDM-GCC附带的GCC 4.7.1版本中缺乏对C ++ 11 std::thread的支持。有关详细信息,请查看this question。您的代码可以使用GCC 4.8.1进行编译(尽管它仍然存在运行时错误):

http://ideone.com/oUhvi3

因此,我建议您解决问题,尝试更新到更新版本的编译器。根据{{​​3}}和this link这样做应该是将最新版本的编译器安装到当前所在的文件夹中,或者将其安装在新文件夹中并更新设置的简单问题。在Dev C ++中指向新的编译器。

但是,由于您不熟悉C ++(以及一般的编程),因此对Dev C ++没有特别的附件,我建议您切换到更现代和广泛使用的IDE。对于Windows来说,MS Visual Studio是一个不错的选择,但是有很多开源和跨平台的IDE可用于C ++。建议初学者使用受欢迎的IDE,因为您更有可能在线找到帮助和支持的来源,并且当您遇到问题时更有可能在Stackoverflow等网站上获得答案。有很多与IDE有关的Stackoverflow问题。示例(来自Google快速搜索):

this link

What is the good cross platform C++ IDE?

Best C++ IDE or Editor for Windows