clang是否支持_原子指针算法

问题描述 投票:0回答:1

演示.c

#include<stdio.h>
int main(){
static int ia[2];
 static volatile _Atomic (int *) a = (int *) (&ia[1]);
 if ((a += (1)) != (int *) ((int *) (&ia[1]) + (1)))
         printf("1");
}

编译失败

<source>:5:9: error: invalid operands to binary expression ('volatile _Atomic(int *)' and 'int')
    5 |  if ((a += (1)) != (int *) ((int *) (&ia[1]) + (1)))
      |       ~ ^  ~~~
1 error generated.
Compiler returned: 1

Gcc 没问题!

https://godbolt.org/z/fMqzoe4b5

clang是否支持_原子指针算法

clang atomic
1个回答
0
投票

这是合法的C代码。 clang 拒绝它的事实是一个 bug,于 2015 年报告,但仍未修复。

© www.soinside.com 2019 - 2024. All rights reserved.