Existe-t-il une méthode portable dans C pour trouver le masque pour un champ de bits au moment de la compilation?Masques de champ de bits dans C
Idéalement, je voudrais pouvoir un champ atomiquement clair comme ceci:
struct Reference {
unsigned age : 3;
unsigned marked : 1;
unsigned references : 4;
};
struct Reference myRef;
__sync_and_and_fetch(&myRef, age, ~AGE_MASK);
Sinon, je dois prendre un verrou sur la struct, qui est plus lourd que je voudrais.
__sync_and_and_fetch ne fonctionne pas sur les champs de bits: « GCC permettra à tout type scalaire ou pointeur intégral qui est 1, 2, 4 ou 8 octets de longueur. » – sambowry