2

假设这段代码:

  static inline void inc(int64_t* atomic)
  {
    __asm__ __volatile__
    (
      "lock incq %0\n"
        : "=m" (*atomic)
        : "m" (*atomic)
    );
  }

Clang 编译器不支持锁定前缀(还没有?)。我现在该怎么办?

4

2 回答 2

5

集成的汇编器不理解还不是单独语句的前缀。作为一种解决方法,您也可以只添加一个';' “锁定”之后。但正如其他评论指出的那样,您最好尽可能使用内置插件。

于 2010-05-30T05:02:21.763 回答
4

为什么不使用内置插件...?

static inlint void inc(int64_t* atomic) {
   __sync_add_and_fetch_8(atomic, 1);
}
于 2010-05-29T17:59:58.190 回答