Czy istnieje przenośna metoda w C, aby znaleźć maskę dla pola bitowego w czasie kompilacji?Maski bitfield w C
Idealnie chciałabym móc atomowo jasne pole tak:
struct Reference {
unsigned age : 3;
unsigned marked : 1;
unsigned references : 4;
};
struct Reference myRef;
__sync_and_and_fetch(&myRef, age, ~AGE_MASK);
przeciwnym razie muszę wyjąć zamek w struktury, która jest więcej niż wagi ciężkiej chciałbym.
Funkcja __sync_and_fetch nie działa na polach bitowych: "GCC zezwoli na użycie dowolnego scalaru skalarnego lub wskaźnika o długości 1, 2, 4 lub 8 bajtów." – sambowry