concurrency - 如何在Eclipse CDT中使用GCC/G++编译并运行C++0x?

标签 concurrency c++11 eclipse-cdt

我正在尝试弄清楚如何使用即将发布的 C++ 版本 0x。通过使用 gcc std=gnu++0x 选项,它应该可以在 GCC 4.3+ 中使用。

我使用 0x 的简单线程程序在 Eclipse CDT 中编译,并在“项目”>“属性”>“C/C++ 构建”>“设置”>“杂项”>“其他标志”中添加了 std=gnu++0x。

#include <iostream>
#include <thread>
using namespace std;

void hello()
{
    cout << "Hello Concurrent World!" << endl;
}

int main()
{
    cout << "starting" << endl;
    thread t(hello);
    t.join();
    cout << "ending" << endl;
    return 0;
}

程序只打印“starting”并返回0。有谁知道为什么它不运行线程化的hello函数?

最佳答案

要使用线程,您还需要链接线程库。 如果您还没有这样做,请添加 -lpthread到您的命令行或在您的情况下到其他标志字段。

命令行执行(在 Eclipse 的控制台窗口中可见)应如下所示:

gcc -std=gnu++0x -lpthread <source_file_name>.cc

关于concurrency - 如何在Eclipse CDT中使用GCC/G++编译并运行C++0x?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3175450/

相关文章:

c++ - 如何从stringstream中跳过空格和换行符并将它们放入 vector 中?

c++ - Eclipse CDT 显示错误的错误图标

c++ - Juno CDT 插件无法运行 C++ 应用程序

java - 使用 QueudSynchronizer 实现 CountLatch 有什么好处

java - Java 中的 REST WebService 和并发

java - 多个线程可以同时将数据写入文件吗?

c++ - 用STL算法生成一个动态大小的动态容器

c++11 - std::move-如何警告程序员不要使用* move 自*对象

java - foreach循环会导致线程并发吗?

c++ - 如何在 C++ 的 Eclipse 中启用自动代码建议?