コンパイル時にビットフィールドのマスクを見つけるための C での移植可能な方法はありますか?
理想的には、次のようなフィールドをアトミックにクリアできるようにしたいと考えています。
struct Reference {
unsigned age : 3;
unsigned marked : 1;
unsigned references : 4;
};
struct Reference myRef;
__sync_and_and_fetch(&myRef, age, ~AGE_MASK);
それ以外の場合は、構造体のロックを解除する必要があります。これは、私が望むよりも重いものです。