Comment faire pour compiler le code à l'aide #include <fil>
Je suis en train de compiler en C++ code qui utilise des threads:
#include <iostream>
#include <thread>
void hello()
{
std::cout<<"Hello Concurrent World\n";
}
int _main(int argc, _TCHAR* argv[])
{
std::thread t(hello);
t.join();
return 0;
}
J'ai des erreurs lors de la compilation:
c:\temp\app1\app1\app1.cpp(6): fatal error C1083: Cannot open
include file: 'thread': No such file or directory
~/Documents/C++ $ g++ -o thread1 thread1.cpp -D_REENTRANT -lpthread
In file included from /usr/include/c++/4.5/thread:35:0,
from thread1.cpp:2:
/usr/include/c++/4.5/bits/c++0x_warning.h:31:2: error: #error This file
requires compiler and library support for the upcoming ISO C++ standard,
C++0x. This support is currently experimental, and must be enabled with
the -std=c++0x or -std=gnu++0x compiler options.
Comment puis-je corriger ces erreurs?
- Double de stackoverflow.com/questions/2519607/...
Vous devez vous connecter pour publier un commentaire.
<thread>
et de la norme en charge des threads est une nouvelle fonction (définie dans le standard C++11). Comme pour g++, vous devez l'activer en ajoutant-std=c++0x
à la ligne de commande, comme expliqué dans le message d'erreur.Aussi, vous êtes à l'aide de forme non standard (Microsoft) principal, utiliser le "classique"
main
et normalchar
:Avis que tous C++11 fonctionnalités sont disponibles dans les compilateurs gcc; aussi loin que g++ est concerné, vous pouvez voir l'état de leur mise en œuvre ici.
Oui, le fichier d'en-tête
<thread>
est seulement la norme C++11 nouveau standard (finalisé cette année seulement).Avec GCC, vous aurez besoin de la toute dernière 4.6 version, et même avec elle, tout n'est pas pris en charge de C++11. Voir ce tableau
Autant que MSVC, le C++11
<thread>
en-tête n'est pas pris en charge dans VS2010 - vous aurez besoin de tirer vers le bas une Developer Preview de Visual Studio 11 (http://msdn.microsoft.com/en-us/vstudio/hh127353) pour l'essayer aujourd'hui.Voir http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx pour plus de détails sur les nouveautés de C++ pour Visual Studio 11.
Aussi, mon PDF du livre (qui est en pre-release pour le moment) a la définition suivante de
main()
:qui évite les problèmes que vous rencontrez avec
_TCHAR
étant pas défini dans GCC.