So you mean this:Nothing to stop you grouping them in a struct. You could use 32 bit ints, then only need 3, but that may have a performance hit on an 8 bit processor. A general idea is that lots of repeated simple clear code is easier to understand, debug and maintain than a small amount of obscure clever code. In the early days of C, programmers seemed to delight in getting as much done with the least possible source code by using obscure oh-so-clever features of the language (look at some of the standard library implementation for examples of that), but thinking has changed, and KISS is the motto now.
Code:
typedef struct{
uint32_t settings1;
uint32_t settings2;
uint32_t settings3;
}__SETTINGS__;
__SETTINGS__ settings;
checkBit(settings.settings1, BIT_MASK)