将 _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