std:: erreur de thread (thread non membre de std))

j'ai compilé et installé gcc4.4 en utilisant macports.

quand j'essaie de compiler en utilisant -> g++ -G-Wall-ansi-pthread-std=C++0x main.rpc...:

 #include <thread>
 ...
  std::thread t(handle);
  t.join();
 ....

le compilateur retourne:

 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

Mais std::cout <<... compile bien..

quelqu'un Peut-il m'aider?

18
demandé sur Xeo 2010-03-26 00:39:19

5 réponses

gcc ne supporte pas entièrement std:: thread yet:

http://gcc.gnu.org/projects/cxx0x.html

http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html

Utiliser boost:: thread dans l'intervalle.

Modifier

bien que ce qui suit compilé et exécuté très bien pour moi avec gcc 4.4.3:

#include <thread>
#include <iostream>

struct F
{
  void operator() () const
  {
    std::cout<<"Printing from another thread"<<std::endl;
  }
};

int main()
{
  F f;
  std::thread t(f);
  t.join();

  return 0;
}

Compilé avec

g++ -Wall -g -std=c++0x -pthread main.cpp

Sortie de a.out:

Printing from another thread

Pouvez-vous fournir le code complet? Peut-être qu'il y a quelque chose d'obscur qui se cache là-dedans!--4-- > s?

14
répondu Artem Sokolov 2010-03-26 03:43:21

Goutte -ansi, cela signifie-std=c++98, ce que vous ne voulez évidemment pas. Il provoque également macro __STRICT_ANSI__ à définir et cela peut changer le comportement des en-têtes, par exemple en désactivant le support C++0x.

5
répondu Tronic 2010-03-26 14:23:15

j'ai eu le même problème sur windows en utilisant MinGW. J'ai trouvé des classes d'emballage pour in on github mingw-std-threads y Compris mingw.mutex.h, mingw.fil.les fichiers h dans le répertoire Global MinGW ont corrigé ce problème. Tout ce que j'avais à faire est d'inclure le fichier d'en-tête et mon code est resté le même

#include "mingw.thread.h"

...
std::thread t(handle);
...
2
répondu Vlad Bezden 2016-11-30 19:49:06

Eh bien J'ai essayé Ubuntu avec GCC 4.4.1 et cela fonctionne comme un charme. Le problème est spécifique à Mac OS X, il suffit maintenant de savoir pourquoi...

0
répondu luis 2010-03-27 00:17:31

Êtes-vous sûr d'utiliser le bon compilateur? Avez-vous gcc_select?

0
répondu Chinasaur 2011-09-15 18:17:44