#include #include #include enum flags { FLAG_1 = 0x00000001, FLAG_2 = 0x00000002, FLAG_3 = 0x00000004, FLAG_4 = 0x00000008, FLAG_5 = 0x00000010, FLAG_B_MAX = 0x7FFFFFFF }; int main() { uint32_t test_flags = FLAG_2 | FLAG_4; uint32_t val = test_flags; uint32_t pos = 0x1; while( val ) { if( val & 1 ) { switch(pos) { case FLAG_1: printf("FLAG_1 "); break; case FLAG_2: printf("FLAG_2 "); break; case FLAG_3: printf("FLAG_3 "); break; case FLAG_4: printf("FLAG_4 "); break; case FLAG_5: printf("FLAG_5 "); break; default: printf("Unhandled "); break; } } pos<<=1; val>>=1; } printf("\n"); return 0; } /* output: FLAG_2 FLAG_4 */