gpt4 book ai didi

c - C 中的位域掩码

转载 作者:太空狗 更新时间:2023-10-29 15:00:01 25 4
gpt4 key购买 nike

在 C 中是否有一种可移植的方法来在编译时找出位域的掩码?

理想情况下,我希望能够像这样自动清除一个字段:

struct Reference {
unsigned age : 3;
unsigned marked : 1;
unsigned references : 4;
};

struct Reference myRef;
__sync_and_and_fetch(&myRef, age, ~AGE_MASK);

否则我必须对结构进行锁定,这比我想要的更重量级。

最佳答案

或者,如果您真的想要面具:

union Reference {
unsigned asWord;
struct {
unsigned age : 3;
unsigned marked : 1;
unsigned references : 4;
} asFields;
}

Reference agemask_ref;
agemask_ref.asFields = (typeof(agemask_ref.asFields)){0, -1, -1};
unsigned agemask = agemask_ref.asWord;

关于c - C 中的位域掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1549131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com