我正在尝试使用Eclipse Luna在Windows 8中编译此代码。 我收到了错误:' thread'不是' std'
的成员#include <thread>
#include <iostream>
void func() {
std::cout << "Hello thread!" << std::endl;
}
int main() {
std::thread t(func);
t.join();
return 0;
}
我使用了Eclipse MinGW,GCC和Eclipse CygWin,GCC。 我使用了以下设置:-pthread -std = c ++ 11 C / C ++ Build - &gt;设置 - &gt;工具设置 - &gt; GCC C ++编译器 - &gt;其他 - &gt;其他旗帜 但是错误仍然存在。 我查看了thread.h的来源。在那里我找到了这条线
#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
我在其中定义了_GLIBCXX_HAS_GTHREADS
和_GLIBCXX_USE_C99_STDINT_TR1
C / C ++ Build - &gt;设置 - &gt;工具设置 - &gt; GCC C ++编译器 - &gt;预处理器 - &gt;定义的符号。
这使编译错误消失,但我得到了一堆似乎来自系统库的其他错误。
无论如何:定义符号看起来更像是&#34; hack&#34;比官方&#34;和推荐的解决方案
顺便说一句:我也尝试使用Code :: Blocks而不是Eclipse,但我得到了同样的错误。