Mingw-w64中未找到C11 threads.h文件?

5
我正在尝试在我的程序中使用C11标准的线程,我特别使用了Mingw-w64工具链x86_64-8.1.0-posix-seh-rt_v6-rev0。按照C11标准的定义#include时,我会从gcc获得No such file or directory错误。但我发现可以无误地使用#include。顺便提一下,我正在向gcc传递-std=c11参数。我在互联网上搜过很多有关标准C线程支持的信息,但我只找到了关于C++的信息。请问为什么我不能使用C11标准的threads.h库?
编辑: 我还检查了STDC_NO_THREADS宏是否已定义。似乎未定义。
#ifdef __STDC_NO_THREADS__
printf("We got no threads capp'n!\n");
#endif

我没有收到有关没有线程的消息。


mingw64 构建时使用 msvcrt 而不是 glibc。检查 __STDC_NO_THREADS__ 宏是否已定义。 - bool3max
这似乎是未定义的。 - SeanRamey
此外,我不明白msvcrt和glibc与此有什么关系? - SeanRamey
3
C11线程在C编译器或标准库中的支持并不是很好。如果你想在Windows上使用它们,请考虑使用Pelles C。 - Shawn
那真糟糕。我想知道为什么?特别是因为C ++似乎没有问题地得到了支持?我猜我只能去抱怨或自己解决它了... - SeanRamey
1个回答

0

我在Windows 11上也遇到了这个问题。Mingw-w64和vs 2022下没有threads.h。但是如果您想使用它,可以安装Msys2和gcc。安装后您会在那里找到头文件!我将thread.h添加到源文件中并进行了测试。当然,在Msys2中的gcc编译时没有错误和警告。最后,我将__STDC_NO_THREADS____STDC_NO_ATOMICS__添加到源文件中,编译器报告未声明的宏的错误。因此,编译器支持C11标准的并发支持库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接