C ++编译器找不到#include <thread> </thread>

时间:2013-07-27 19:43:21

标签: c++ multithreading g++

这是源文件的顶部:

#include <iostream>
#include <thread>
#include <fstream>

...

thread help(startHelp);

线程在函数handleRequestsFromServer中,startHelp是void函数。

在Mac OS X 10.8.4上使用g++进行编译时,出现此错误:

$ g++ diskutilityhelper.cpp -o run.out
diskutilityhelper.cpp:5:18: error: thread: No such file or directory
diskutilityhelper.cpp: In function ‘void handleRequestsFromServer()’:
diskutilityhelper.cpp:140: error: ‘thread’ was not declared in this scope
diskutilityhelper.cpp:140: error: expected `;' before ‘bomb’

我根本不明白这个错误。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:6)

您可能想要使用Clang而不是GCC。

clang++ -std=c++11 -stdlib=libc++ diskutilityhelper.cpp -o run.out

GCC的所有选项都可以与Clang一起使用,有些则被忽略。以上链接到libc ++,它是使用Clang的Mac OS X的首选C ++标准库(比libstdc ++更完整(即使在考虑最新的GCC时)。

至于为什么会发生这种情况:我的魔术算命球告诉我你所说的g ++是一个古老的GCC 4.2.1 Apple的东西,有GCC的libstdc ++,几乎没有C ++ 11的支持。 Apple改用了Clang,现在更受欢迎。

答案 1 :(得分:3)

XCode附带的GCC版本非常陈旧。它不支持C ++ 11。

您应该使用clang++编译代码,而不是使用最新的XCode版本。这很好地支持C ++ 11(AFAIK)。 GCC包含在XCode中主要用于兼容性目的。这些天OS X上推荐的编译器是Clang。