1

这是我的源文件的顶部:

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

...

thread help(startHelp);

线程在函数 handleRequestsFromServer 内部,而 startHelp 是一个void函数。

g++在 Mac OS X 10.8.4 上编译它时,我收到此错误:

$ 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’

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

4

2 回答 2

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 thingie,带有 GCC 的 libstdc++,它几乎不支持 C++11。Apple 改用 Clang,现在它更受欢迎。

于 2013-07-27T19:52:03.197 回答
3

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

clang++您应该使用最新的 XCode 版本来编译您的代码。那支持 C++11 就好了(AFAIK)。GCC 包含在 XCode 中主要是出于兼容性目的。目前在 OS X 上推荐的编译器是 Clang。

于 2013-07-27T19:52:18.300 回答