我正在运行Ubuntu 14.04。
我重现的步骤:
创建一个新的C ++项目(New - > C ++ - > Hello World项目),我称之为TestStdThread
将主文件中的代码更改为:
#include <thread>
#include <iostream>
int main() {
std::cout << "You have " << std::thread::hardware_concurrency() << " cores." << std::endl;
return 0;
}
转到TestStdThread - &gt;属性 - &gt; C / C ++ Build - &gt;设置 - &gt; GCC C ++编译器,并将命令选项从g++
更改为g++ -std=c++11
转到TestStdThread - &gt;属性 - &gt; C / C ++ Build - &gt;设置 - &gt; GCC C ++编译器 - &gt;包括,将/usr/include
添加到包含路径(-I),并将pthread.h
添加到包含文件(-include)
转到TestStdThread - &gt;属性 - &gt; C / C ++ Build - &gt;设置 - &gt; GCC C ++链接器 - &gt;库,将pthread
添加到库(-l),然后将/usr/lib/x86_64-linux-gnu
添加到库搜索路径(-L)
TestStdThread - &gt;建设项目
点击“运行”
没有构建错误。 Eclipse告诉我项目有错误并且询问我是否想要运行它,当我说是的时,输出是正确的:You have 4 cores.
。但是,Eclipse仍然用红色标记了std::thread::hardware_concurrency
部分,并将其报告(悬停时),因为“函数'hardware_concurrency'无法解析”,而std::thread
在键入{{1}时未显示} Ctrl + 空格。
这是我用来查找std::
文件在pthread
内的位置的bash命令(省略/usr
,因为它包含了许多我不想要的doc文件) :
/usr/share
答案 0 :(得分:10)
转到Project
- &gt; Properties
- &gt; C/C++ General
- &gt; Preprocessor include paths, etc
- &gt; Providers
- &gt; CDT GCC Builtin Compiler Settings
并将-std=c++11
附加到编译器规范。
您也可以为前往Window
- &gt;的所有项目执行此操作Preferences
- &gt; C/C++
- &gt; Build
- &gt; Settings
- &gt; Discovery
并将-std=c++11
附加到CDT GCC Builtin Compiler Settings
规范。
确保之后重新编制项目索引。
这些说明适用于Eclipse Luna(4.4.0),对于以前的版本,路径类似。