Có cách nào di động trong C để tìm ra mặt nạ cho một trường bit tại thời gian biên dịch không?Mặt nạ bitfield trong C
Lý tưởng nhất, tôi muốn để có thể nguyên tử rõ ràng một lĩnh vực như thế này:
struct Reference {
unsigned age : 3;
unsigned marked : 1;
unsigned references : 4;
};
struct Reference myRef;
__sync_and_and_fetch(&myRef, age, ~AGE_MASK);
Nếu không tôi phải đưa ra một khóa trên các cấu trúc, mà là nhiều hơn nặng hơn tôi muốn.
__sync_and_and_fetch không hoạt động trên bitfields: "GCC sẽ cho phép bất kỳ loại vô hướng hoặc kiểu con trỏ nào có chiều dài 1, 2, 4 hoặc 8 byte". – sambowry