RicardasSim

enum flags, while

Feb 27th, 2020
736
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.12 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>
  4.  
  5. enum flags {
  6.  
  7.     FLAG_1   = 0x00000001,
  8.     FLAG_2   = 0x00000002,
  9.     FLAG_3   = 0x00000004,
  10.     FLAG_4   = 0x00000008,
  11.     FLAG_5   = 0x00000010,
  12.     FLAG_B_MAX  = 0x7FFFFFFF
  13.  
  14. };
  15.  
  16. int main()
  17. {
  18.  
  19.     uint32_t test_flags = FLAG_2 | FLAG_4;
  20.  
  21.     uint32_t val = test_flags;
  22.  
  23.     uint32_t pos = 0x1;
  24.  
  25.     while( val )
  26.     {
  27.  
  28.         if( val & 1 )
  29.         {
  30.             switch(pos)
  31.             {
  32.                 case FLAG_1:
  33.                     printf("FLAG_1 ");
  34.                     break;
  35.  
  36.                 case FLAG_2:
  37.                     printf("FLAG_2 ");
  38.                     break;
  39.  
  40.                 case FLAG_3:
  41.                     printf("FLAG_3 ");
  42.                     break;
  43.  
  44.                 case FLAG_4:
  45.                     printf("FLAG_4 ");
  46.                     break;
  47.  
  48.                 case FLAG_5:
  49.                     printf("FLAG_5 ");
  50.                     break;
  51.  
  52.                 default:
  53.                     printf("Unhandled ");
  54.                     break;
  55.             }
  56.         }
  57.  
  58.         pos<<=1;
  59.         val>>=1;
  60.     }
  61.  
  62.     printf("\n");
  63.  
  64.     return 0;
  65. }
  66.  
  67. /*
  68. output:
  69.  
  70. FLAG_2 FLAG_4
  71.  
  72. */
Advertisement
Add Comment
Please, Sign In to add comment