I am trying to compile some C++ code that uses 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;
}
I get errors when compiling:
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.
How do I fix these errors?
<thread>
and standard threading support is a new feature (defined in the C++11 standard). As for g++, you have to enable it adding -std=c++0x
to the command line, as explained in the error message.
Also, you are using a nonstandard (Microsoft-specific) main, use the "classic" main
and normal char
:
// thread1.cpp
#include <iostream>
#include <thread>
void hello()
{
std::cout<<"Hello Concurrent World\n";
}
int main(int argc, char * argv[])
{
std::thread t(hello);
t.join();
return 0;
}
Notice that not all C++11 features are available in current compilers; as far as g++ is concerned, you can find the status of their implementation here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With