注意:'std :: thread'在头文件'<thread>'中定义;您忘记了“ #include <thread>”吗?

HAO*_*LEE 0 c++ multithreading g++ c++11

我尝试在c ++中编译一个简单的c ++代码,但是当我尝试在Windows中使用g ++编译它时,总是返回错误。

我用

g++ -std=c++0x -pthread main.cpp
Run Code Online (Sandbox Code Playgroud)

错误消息是:

std::thread' is defined in header '<thread>'; did you forget to '#include <thread>'?
Run Code Online (Sandbox Code Playgroud)

这没有意义,因为代码只是

#include<thread>

void f(int i) {}

int main() {
        std::thread t(f, 1);
        t.join();
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我相信这段代码可以在linux上运行,我想知道为什么它不能在Windows下运行。

Jes*_*uhl 5

要使用它,std::thread您必须将代码编译为C ++ 11,C ++ 14或C ++ 17。

您正在传递-std=c++0x给gcc。c++0x是gcc C ++ 11预发行版本的名称,取决于您的编译器版本,可能不完整。

将您的gcc命令行更改为-std=c++11,很可能情况会更好。如果不是,则可能需要获取较新版本的编译器。