将 _Atomic 类型限定符应用于不完整类型是否有效?
Is applying _Atomic type qualifier to an incomplete type valid?
将 _Atomic
类型限定符应用于不完整的类型有效吗?
示例:
_Atomic void* p;
_Atomic struct S* p1;
_Atomic struct S x;
struct S { int i; };
调用:
$ gcc t0.c -std=c11 -pedantic -Wall -Wextra -c
<nothing>
$ clang t0.c -std=c11 -pedantic -Wall -Wextra -c
<source>:1:1: error: _Atomic cannot be applied to incomplete type 'void'
<source>:2:1: error: _Atomic cannot be applied to incomplete type 'struct S'
<source>:3:1: error: _Atomic cannot be applied to incomplete type 'struct S'
在 C11 标准(以及 C2x 草案 n2596.pdf)中,我找不到任何约束/语义,禁止/限制将 _Atomic
应用于不完整的类型。
来自https://github.com/llvm/llvm-project/issues/36585:
it does appear to be valid
将 _Atomic
类型限定符应用于不完整的类型有效吗?
示例:
_Atomic void* p;
_Atomic struct S* p1;
_Atomic struct S x;
struct S { int i; };
调用:
$ gcc t0.c -std=c11 -pedantic -Wall -Wextra -c
<nothing>
$ clang t0.c -std=c11 -pedantic -Wall -Wextra -c
<source>:1:1: error: _Atomic cannot be applied to incomplete type 'void'
<source>:2:1: error: _Atomic cannot be applied to incomplete type 'struct S'
<source>:3:1: error: _Atomic cannot be applied to incomplete type 'struct S'
在 C11 标准(以及 C2x 草案 n2596.pdf)中,我找不到任何约束/语义,禁止/限制将 _Atomic
应用于不完整的类型。
来自https://github.com/llvm/llvm-project/issues/36585:
it does appear to be valid