【问题标题】:How do I upgrade from POSIX to <threads.h>, C11 standard?如何从 POSIX 升级到 <threads.h>,C11 标准?
【发布时间】:2020-12-26 09:39:33
【问题描述】:

将我的 C 程序从 pthreads、POSIX、 切换到 C11 标准

我从 2019 年开始使用 MAC。以下是我的错误和我的 gcc -version 输出。

如何升级以使用

7 年前的问题说不支持,现在还是这样吗?为什么不支持“标准”?

错误信息:

ruby.c:5:10:致命错误:找不到“threads.h”文件 #include

gcc --version

配置: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1 苹果 clang 版本 11.0.0 (clang-1100.0.33.17) 目标: x86_64-apple-darwin19.6.0 线程模型:posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin

【问题讨论】:

  • 标准越新,尤其是在旧的建立语言中,它们的“标准”越低,得到的支持就越少。
  • 在许多情况下,这种转变会被视为降级......例如,pthreads 对更多编译器和设备有更好的支持(有些人会争辩说,还有更好的 API)。跨度>
  • 我们很清楚pthread.h 标准 (it's in the POSIX standard)
  • 发布新标准或新版本时,创建、测试和分发实现需要一些时间。 Mac 的使用年限没有直接关系,但您似乎确实安装了相当旧版本的 XCode 命令行工具,这很重要。我不确定是否有可用的版本支持 optional 线程功能,但我确实希望最新版本通过提供它或通过定义指示它们不提供它的功能测试宏来符合.

标签: c pthreads threads.h


【解决方案1】:

你不知道,Posix 是标准。 谢谢朋友。

【讨论】:

  • POSIX 是 a 标准。 C 线程也是标准的[一部分]。我看到改变的唯一令人信服的原因——即使使用支持线程选项的 C 实现也不是微不足道的——是为了可移植到非 POSIX 平台,但实际上,转换并不一定会产生兼容性赢得一个希望。
猜你喜欢
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多