当前位置: 首页 > 知识库问答 >
问题:

CLANG3.2在STD::Atomic上失败-一个libc++问题?

丁理
2023-03-14

我试着编译简单的代码

#include <atomic>
int bar = 0;
void foo(std::atomic<int>&flag)
{ bar = flag; }

对于Clang++3.2(从llvm.org下载为LLVM3.2;在mac OS.x 10.8.3上,此操作失败,出现错误

{return __c11_atomic_load(&__a_, __m);}
        ^                 ~~~~~
operator _Tp() const _NOEXCEPT          {return load();}
                                                ^
bar = done;

当我使用/usr/bin/clang++时(这是OS或Xcode附带的),它编译得很好。在这两种情况下,libc++都是/usr/lib/c++/v1。

我错过了什么?LLVM3.2附带了另一个libc++吗?(我在Clang3.2树中找不到任何东西)。

共有1个答案

沈翰
2023-03-14

Xcode现在将libc++绑定在Xcode.app目录中。您可以通过控件单击xcode.app并选择“Show Package Contents”来检查该目录。

 类似资料:
  • 考虑以下代码片段: > 带有的G9未能编译代码,错误如下: /opt/compiler explorer/gcc-trunk-20180711/include/c/9.0.0/variant:94:29:错误:嵌套名称说明符中使用的类型“std::variant_size”不完整 godbolt上的活生生的例子。组织 > 如果不是,这里什么实现是正确的,为什么?

  • 我知道是一个原子对象。但是原子化到什么程度呢?据我所知,操作可以是原子的。使一个对象原子化到底是什么意思?例如,如果有两个线程同时执行以下代码: 那么整个操作(例如)是原子操作吗?还是对变量atomic(so)进行了更改?

  • 根据cppreference,std::atomic::notify\u one()将通知至少一个等待所述atomic的线程。这意味着根据标准,它可以解锁多个线程。这与std::condition\u variable::notify\u one()相反,后者指定它将解锁(不超过)一个线程。 这种差异来自哪里?这不是使用相同的底层机制吗?就标准库的实现而言,是否所有流行的都有机会通过此调用实际解除

  • 我不知道如何创建以下内容: 我总是得到 /usr/include/c/5.5.0/bits/stl_对。h:139:45:错误:使用已删除的函数'std::atomic::atomic(const std::atomic 我已经试过了 我知道std::atomic是不可复制的,那么你应该如何创建一对呢?难道这不可能吗?

  • 问题内容: 使用groovy从jenkins工作空间获取文件列表在一个节点上失败,但在另一个节点上有效。这是管道中的代码: 输出: 问题答案: 管道在Jenkins主服务器上执行,只有通过启用了远程处理的API的魔力,事情才会在所选节点上发生。因此File以及所有使用File的东西都不起作用,而且永远不会:它总是在master上执行。 来源:https://groups.google.com/fo

  • 我正在使用flutter_stripe插件进行条纹付款。它正在 IOS 上运行,但在Android上,我收到此错误.根据flutter_stripe文档,为Android和ios完成的所有设置。 失败:构建失败,但有例外。 < li >哪里出错:任务执行失败':app:checkDebugAarMetadata '。 无法解析配置的所有文件': app:调试运行时间类路径'。无法解析com.str