gpt4 book ai didi

GCC 中的 C11

转载 作者:太空狗 更新时间:2023-10-29 16:23:19 26 4
gpt4 key购买 nike

我正在尝试使用 thread.h 编译一些 C11 代码,但我做不到。我已经重新编译了 GCC(现在运行 4.6.2),我正在尝试使用 gcc -std=c1x file.c -o file 进行编译。我可以在 g++ 中执行此操作(即使用 thread 库)但我不能在 C 中执行此操作。thread.h 是否尚未包含在 GCC 分发版中?

最佳答案

用于线程的标准 C11 header 是 <threads.h> , 不是 <thread.h> .参见 N1570 draft 的第 7.26 节.

大多数 C 标准库,例如 stdio,都没有包含在 gcc 发行版中。相反,gcc 依赖于操作系统提供的任何运行时库。这通常包括 header (如 <threads.h> )和实现库的实际代码。

对于大多数 Linux 系统(或 GNU/Linux,如果您愿意),库是 GNU 的 glibc;对于其他系统,它将是其他东西。

所以真正的问题可能是 glibc 或您正在使用的任何 C 库何时支持 C11 的线程功能。

glibc adds support for C11 threads in version 2.28 . Ubuntu 18.04.1 LTS 系统目前仍然使用 glibc 2.27。同样,这仅适用于使用 GNU libc 的实现,而不适用于所有基于 gcc 的实现。 WorldSEnder 在评论中提到。

更新:Ubuntu 18.10(不是 LTS(长期支持)版本)有 glibc 2.28,它支持 <threads.h> .此外,作为 user2548688's answer指出,musl C library支持<threads.h> .在 Ubuntu 上,您可以安装 musl-dev打包并使用 musl-gcc命令。

(请注意,该库的一些部分,与编译器关系最密切的部分,由 gcc 本身提供的。线程库可能不是其中之一它们,但肯定需要一些编译器支持。)

关于GCC 中的 C11 <thread.h>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8859394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com