我使用macports编译并安装了gcc4.4.
当我尝试使用 - > g ++ -g -Wall -ansi -pthread -std = c ++ 0x main.cpp ...进行编译时:
#include <thread>
...
std::thread t(handle);
t.join();
....
Run Code Online (Sandbox Code Playgroud)
编译器返回:
cserver.cpp: In member function 'int CServer::run()':
cserver.cpp:48: error: 'thread' is not a member of 'std'
cserver.cpp:48: error: expected ';' before 't'
cserver.cpp:49: error: 't' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
但std::cout <<...编译好..
谁能帮我?
我通过MinGW在Windows上使用GCC 4.5.0和Eclipse IDE(如果这很重要).
我正在使用-std=c++0x旗帜.
我发现_GLIBCXX_HAS_GTHREADS仍然没有定义,所以thread对我来说仍然不是命名空间的成员std. - 或者也许是别的东西.
如何通过GCC获得C++ 11线程支持?
PS它无法识别-pthread旗帜.我在本网站的其他地方读到了一个问题.
编辑:愚蠢我:pthread是一个图书馆,不是一个选择.它的安装,gcc可以找到标题,但仍然没有雪茄.
std::thread在MinGW中使用g ++ 4.5.2进行编译时,有没有在Windows中使用C++ 11标准库?
我会假设没有,因为我已经看到许多事情说你必须使用pthreads选项进行编译,但我想我还是会问.
我希望这个代码在gcc下编译,但它没有.我正在使用mingw 4.7.0.我看到标题,但类似乎不存在.我需要什么旗帜?我跑了
g++ -std=gnu++11 main.cpp
Run Code Online (Sandbox Code Playgroud)
代码
#include<atomic>
#include<thread>
#include<iostream>
using namespace std;
atomic<int> a1,a2,a3;
void test(){
cout<<"run";
}
int main(){
thread t(test);
t.join();
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是线程不存在.在我的其他代码中它也说std :: this_thread :: yield()不存在.MSVC11编译这个罚款