我正在运行Ubuntu 14.04。

我复制的步骤:

  • 创建一个新的C++项目(新建-> C++-> Hello World项目),我将其称为TestStdThread
  • 将主文件中的代码更改为此:
    #include <thread>
    #include <iostream>
    
    int main() {
        std::cout << "You have " << std::thread::hardware_concurrency() << " cores." << std::endl;
        return 0;
    }
    
  • 转到TestStdThread->属性-> C/C++构建->设置-> GCC C++编译器,并将命令选项从g++更改为g++ -std=c++11
  • 转到TestStdThread->属性-> C/C++ Build->设置-> GCC C++编译器->包含,将/usr/include添加到包含路径(-I),并将pthread.h添加到包含文件(-include)
  • 转到TestStdThread->属性-> C/C++构建->设置-> GCC C++链接器->库,将pthread添加到库(-l),然后将/usr/lib/x86_64-linux-gnu添加到库搜索路径(-L)
  • TestStdThread->构建项目
  • 单击“运行”

  • 没有构建错误。 Eclipse告诉我该项目有错误,并询问我是否仍然要运行它,当我说"is"时,输出正确是:You have 4 cores.。但是,Eclipse仍然在红色的std::thread::hardware_concurrency部分下划线,并在悬停时报告为“无法解析功能'hardware_concurrency'”,并且在键入std::thread Ctrl + Space时std::没有显示。

    这是我用来查找pthread文件位于/usr中的位置的bash命令(省略了/usr/share,因为它包含许多我不需要的doc文件):
    llama@llama-Satellite-E55-A:/usr$ find -name "*pthread*" -not -path "./share/*"
    ./include/pthread.h
    ./include/x86_64-linux-gnu/bits/pthreadtypes.h
    ./lib/x86_64-linux-gnu/pkgconfig/pthread-stubs.pc
    ./lib/x86_64-linux-gnu/libpthread.so
    ./lib/x86_64-linux-gnu/libpthread_nonshared.a
    ./lib/x86_64-linux-gnu/libgpgme-pthread.so.11.11.0
    ./lib/x86_64-linux-gnu/libgpgme-pthread.so.11
    ./lib/x86_64-linux-gnu/libpthread.a
    ./lib/perl/5.18.2/bits/pthreadtypes.ph
    ./lib/debug/lib/x86_64-linux-gnu/libpthread-2.19.so
    

    最佳答案

    转到Project-> Properties-> C/C++ General-> Preprocessor include paths, etc-> Providers-> CDT GCC Builtin Compiler Settings,然后将-std=c++11附加到编译器规范中。

    您还可以对要转到Window-> Preferences-> C/C++-> Build-> Settings-> Discovery的所有项目执行此操作,并将-std=c++11附加到CDT GCC Builtin Compiler Settings规范中。

    确保以后重新索引您的项目。

    这些说明适用于Eclipse Luna(4.4.0),对于以前的版本,路径相似。

    10-06 07:51