1

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

#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++ 编译器中包含了 -std=c++11 Dev C++ 的项目选项中的附加命令行选项,但我仍然无法删除错误。你能检查一下我做错了什么吗?我也尽可能不想开始使用其他库,因为我很难构建它们(例如 boost)

4

1 回答 1

1

该问题很可能是由于std::thread在 TDM-GCC 中包含的 GCC 4.7.1 的构建中缺乏对 C++11 的支持。看看这个问题,了解详情。您的代码可以使用 GCC 4.8.1 正常编译(尽管它仍然存在运行时错误):

http://ideone.com/oUhvi3

因此,我建议要解决您的问题,请尝试更新到更新版本的编译器。根据这个链接这个链接,这样做应该很简单,将最新版本的编译器安装到它当前所在的文件夹中,或者将它安装在一个新文件夹中并更新 Dev C++ 中的设置以指向新的编译器。

但是,由于您是 C++ 新手(和一般编程),因此对 Dev C++ 没有特别的依恋,我建议您改用更现代和更广泛使用的 IDE。MS Visual Studio 对于 Windows 来说是一个不错的选择,但有很多开源和跨平台的 IDE 可用于 C++。建议初学者使用流行的 IDE,因为当您遇到困难时,您更有可能在线找到帮助和支持来源,并且更有可能在 Stackoverflow 等网站上获得答案。有大量与 IDE 相关的 Stackoverflow 问题。示例(来自快速谷歌搜索):

什么是好的跨平台 C++ IDE?

适用于 Windows 的最佳 C++ IDE 或编辑器

https://stackoverflow.com/questions/535369/what-is-the-best-free-windows-c-ide-compiler

于 2013-11-11T01:36:12.020 回答