3 ms·
Yeah the usual way in C would be to use statement expression (which is a GCC extension but is supported by at least clang and msvc) #define all_bits_set(va
by tredre3 4y ago
Yeah the usual way in C would be to use statement expression (which is a GCC extension but is supported by at least clang and msvc)
#define all_bits_set(value, mask) ({__typeof__(value) v = (value), m = (mask); (v & m) == m; })
I personally would go for the extension aboveor a single 64 bit function, but here's the _Generic version:
static bool all_bits_set32(i32 value, i32 mask) { return (value & mask) == mask; }
static bool all_bits_set64(i64 value, i64 mask) { return (value & mask) == mask; }
#define all_bits_set(value, mask) _Generic((value), int32_t: all_bits_set32, int64_t: all_bits_set64)(value, mask)