You could use an int (here assuming an int is 32 bits large, but that's the case on most platforms and compilers anyways):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#define FLAG1 0x01
#define FLAG2 0x02
#define FLAG3 0x04
#define FLAG4 0x08
#define FLAG5 0x10
#define FLAG6 0x20
//and so on
int flags;
// set a flag:
flags = flags | FLAG1;
//check whether a flag is set or not
if(flags & FLAG1)
//check whether multiple flags are set
if(flags & (FLAG1 | FLAG2 | FLAG3))
//set all flags at once
flags = numeric_limits<unsignedint>::max();