#include #include #include int main() { printf("val:\n"); enum val { first, second, third }; for( uint32_t i = first; i <= third; ++i) { printf("%d ",i); } printf("\nmonths:\n"); /* February = 2, March = 3, ... */ enum months { January = 1, February, March, April, May, June, July, August, September, October, November, December }; for( uint32_t i = January; i <= December; ++i) { printf("%d ",i); } printf("\nflags:\n"); enum flags { FLAG_1 = 0x00000001, FLAG_2 = 0x00000002, FLAG_3 = 0x00000004, FLAG_4 = 0x00000008, FLAG_5 = 0x00000010, FLAG_6 = 0x00000020, FLAG_7 = 0x00000040, FLAG_8 = 0x00000080, FLAG_9 = 0x00000100, FLAG_10 = 0x00000200, FLAG_11 = 0x00000400, FLAG_MAX = 0x00000800 }; for( uint32_t i = FLAG_1; i <= FLAG_MAX; i*=2) { printf("0x%X ",i); } printf("\n"); for( uint32_t i = FLAG_1; i <= FLAG_MAX; i=i<<1) { printf("0x%X ",i); } printf("\nflags again:\n"); enum flags_again { FLAG_A_1 = 0x00000001, FLAG_A_2 = 0x00000002, FLAG_A_MAX = 0x00000800 }; for( uint32_t i = FLAG_A_1; i <= FLAG_A_MAX; i*=2) { printf("0x%X ",i); } printf("\n"); for( uint32_t i = FLAG_A_1; i <= FLAG_A_MAX; i*=2) { switch(i) { case FLAG_A_1: case FLAG_A_2: printf("0x%X ",i); break; default: break; } } printf("\nflags once more:\n"); enum flags_once_more { FLAG_B_1 = 0x00000001, FLAG_B_2 = 0x00000002, FLAG_B_3 = 0x00000004, FLAG_B_4 = 0x00000008, FLAG_B_MAX = 0x7FFFFFFF }; for( uint32_t i = FLAG_B_1; i <= FLAG_B_MAX; i=i<<1) { switch(i) { case FLAG_B_1: printf("FLAG_B_1 "); break; case FLAG_B_2: printf("FLAG_B_2 "); break; case FLAG_B_3: printf("FLAG_B_3 "); break; case FLAG_B_4: printf("FLAG_B_4 "); break; default: printf("U "); break; } } printf("\n"); return 0; } /* output: val: 0 1 2 months: 1 2 3 4 5 6 7 8 9 10 11 12 flags: 0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80 0x100 0x200 0x400 0x800 0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80 0x100 0x200 0x400 0x800 flags again: 0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80 0x100 0x200 0x400 0x800 0x1 0x2 flags once more: FLAG_B_1 FLAG_B_2 FLAG_B_3 FLAG_B_4 U U U U U U U U U U U U U U U U U U U U U U U U U U U */