这是源文件的顶部:
#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’
我根本不明白这个错误。有人可以帮忙吗?
答案 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。