我有一个原子变量,我用C11原子读取和写入。
现在我有一个包含这样的标志的结构:
typedef struct atomic_container {
unsigned int flag1 : 2;
unsigned int flag2 : 2;
unsigned int flag3 : 2;
unsigned int flag4 : 2;
unsigned int progress : 8;
unsigned int reserved : 16;
}atomic_container;
然后我使用一个函数将此结构转换为使用位移的32位宽度的无符号整数。然后用原子函数写入它。
我想知道我是否可以直接以原子方式编写此结构,而不是先将其转换为无符号整数。这似乎有效,但我担心这可能是实现定义,可能导致未定义的行为。正如我想要的那样,所讨论的结构是32位宽。