【发布时间】:2009-10-10 21:35:21
【问题描述】:
在 C 中是否有一种可移植的方式来在编译时找出位字段的掩码?
理想情况下,我希望能够像这样自动清除字段:
struct Reference {
unsigned age : 3;
unsigned marked : 1;
unsigned references : 4;
};
struct Reference myRef;
__sync_and_and_fetch(&myRef, age, ~AGE_MASK);
否则我必须对结构进行锁定,这比我想要的要重。
【问题讨论】:
-
__sync_and_and_fetch 不适用于位域:“GCC 将允许长度为 1、2、4 或 8 字节的任何整数标量或指针类型。”
标签: c atomic bit-fields