Advertisement
BumbleBritches57

Nested Multi-variable _Generic Macro function in C11

Aug 11th, 2017
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.98 KB | None | 0 0
  1. #ifndef BITIOBYTEBITORDERS
  2. #define BITIOBYTEBITORDERS
  3.  
  4. #ifndef BitIOLittleEndian
  5. #define BitIOLittleEndian ULLONG_MAX
  6. #endif  /* BitIOLittleEndian */
  7.    
  8. #ifndef BitIOBigEndian
  9. #define BitIOBigEndian    LDBL_MAX
  10. #endif  /* BitIOBigEndian */
  11.    
  12. #ifndef BitIOLSBit
  13. #define BitIOLSBit        ULLONG_MAX
  14. #endif  /* BitIOLSBit */
  15.    
  16. #ifndef BitIOMSBit
  17. #define BitIOMSBit        LDBL_MAX
  18. #endif  /* BitIOMSBit */
  19. #endif  /* BITIOBYTEBITORDERS */
  20.  
  21. typedef unsigned long long   BitIOLittleEndian_t;
  22. typedef long double             BitIOBigEndian_t;
  23. typedef unsigned long long          BitIOLSBit_t;
  24. typedef long double                 BitIOMSBit_t;
  25.  
  26. #define ReadBits(ByteOrder,BitOrder,BitB,Bits2Read)\
  27. _Generic((ByteOrder),\
  28. BitIOLittleEndian_t:_Generic((BitOrder),BitIOLSBit_t:ReadBitsFromLELSBToLELSB,BitIOMSBit_t:ReadBitsFromLEMSBToLELSB),\
  29. BitIOBigEndian_t:_Generic((BitOrder),BitIOLSBit_t:ReadBitsFromBELSBToLELSB,BitIOMSBit_t:ReadBitsFromBEMSBToLELSB))\(BitB,Bits2Read)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement