【发布时间】:2018-06-12 18:11:31
【问题描述】:
根据 C11 § 6.5.2.3
Accessing a member of an atomic structure or union object results
in undefined behavior.
这是有道理的,因为您通常无法访问整个结构。仍然为什么_Atomic 也是类型限定符而不仅仅是类型说明符?
换句话说,被限定为_Atomic 的结构的目的是什么?我不能读取或写入其中的任何元素。
#include <stdatomic.h>
struct {
int x;
} _Atomic foo;
int main(void) {
foo.x = 42; // write error
return foo.x; // read error
}
foo.x 的两次访问都会导致 GCC/Clang 中出现警告/错误——这完全没问题。 C11 标准。为什么我要限定然后一个结构为_Atomic?
【问题讨论】: