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

おそらく、GCC の代わりに Clang を使用したいと思うでしょう。

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 に切り替え、現在では 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 に答える