Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

C-fags

Name: Anonymous 2011-06-25 16:08

What would be the best way to implement flags in C?
Bit-fields, enums, defines, etc. I've seen arguments for all three so I'm asking you, mighty /prog/, to resolve this problem.

inb4 every /prog/ meme in existence

Name: Anonymous 2011-06-25 18:21


#define FLAG1 1>>0
#define FLAG2 1>>1
#define FLAG3 1>>2
#define FLAG4 1>>3

#define SET_FLAG(FLAG, VAR) (VAR |= (FLAG))
#define UNSET_FLAG(FLAG, VAR) (VAR &= (~(FLAG)))
#define TOGGLE_FLAG(FLAG, VAR) (VAR ^= (FLAG))
#define CHECK_FLAG(FLAG, VAR) ((VAR) & (FLAG))

unsigned int my_flags;
// set FLAG1 in my_flags to high
SET_FLAG(FLAG1, my_flags);
// set multiple flags
SET_FLAG(FLAG2 | FLAG3, my_flags);
// set FLAG1 in my_flags to low
UNSET_FLAG(FLAG1, my_flags);
// toggle FLAG3
TOGGLE_FLAG(FLAG3, my_flags);
// toggle multiple flags
TOGGLE_FLAG(FLAG1 | FLAG4, my_flags);
// check flags
if(CHECK_FLAG(FLAG1, my_flags)) {
  // FLAG1 is high
} else if(CHECK_FLAG(FLAG3 | FLAG4, my_flags))
  // FLAG3 and FLAG4 is high
} else if(!CHECK_FLAG(FLAG2, my_flags)) {
  //FLAG2 is NOT high
}

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List