मैंने @ रेनटो-झूमर द्वारा दिए गए अच्छे उत्तर को आगे बढ़ाकर निम्नलिखित का समर्थन सुनिश्चित किया:
_NIBBLE_(…)
- 4 बिट्स, तर्क के रूप में 1 कुतरना
_BYTE_(…)
- तर्क के रूप में 8 बिट्स, 2 निबल
_SLAB_(…)
- 12 बिट्स, 3 निबल्स तर्क के रूप में
_WORD_(…)
- 16 बिट्स, 4 निबल्स तर्क के रूप में
_QUINTIBBLE_(…)
- 20 बिट, तर्क के रूप में 5 निबल
_DSLAB_(…)
- 24 बिट, तर्क के रूप में 6 निबल
_SEPTIBBLE_(…)
- 28 बिट्स, 7 निबल्स तर्क के रूप में
_DWORD_(…)
- 32 बिट्स, 8 निबल्स तर्क के रूप में
मैं वास्तव में "क्विंटिबबल" और "सेप्टिबल" शब्दों के बारे में इतना निश्चित नहीं हूं। अगर किसी को कोई विकल्प पता है तो कृपया मुझे बताएं।
यहाँ मैक्रो फिर से लिखा गया है:
#define __CAT__(A, B) A##B
#define _CAT_(A, B) __CAT__(A, B)
#define __HEX_0000 0
#define __HEX_0001 1
#define __HEX_0010 2
#define __HEX_0011 3
#define __HEX_0100 4
#define __HEX_0101 5
#define __HEX_0110 6
#define __HEX_0111 7
#define __HEX_1000 8
#define __HEX_1001 9
#define __HEX_1010 a
#define __HEX_1011 b
#define __HEX_1100 c
#define __HEX_1101 d
#define __HEX_1110 e
#define __HEX_1111 f
#define _NIBBLE_(N1) _CAT_(0x, _CAT_(__HEX_, N1))
#define _BYTE_(N1, N2) _CAT_(_NIBBLE_(N1), _CAT_(__HEX_, N2))
#define _SLAB_(N1, N2, N3) _CAT_(_BYTE_(N1, N2), _CAT_(__HEX_, N3))
#define _WORD_(N1, N2, N3, N4) _CAT_(_SLAB_(N1, N2, N3), _CAT_(__HEX_, N4))
#define _QUINTIBBLE_(N1, N2, N3, N4, N5) _CAT_(_WORD_(N1, N2, N3, N4), _CAT_(__HEX_, N5))
#define _DSLAB_(N1, N2, N3, N4, N5, N6) _CAT_(_QUINTIBBLE_(N1, N2, N3, N4, N5), _CAT_(__HEX_, N6))
#define _SEPTIBBLE_(N1, N2, N3, N4, N5, N6, N7) _CAT_(_DSLAB_(N1, N2, N3, N4, N5, N6), _CAT_(__HEX_, N7))
#define _DWORD_(N1, N2, N3, N4, N5, N6, N7, N8) _CAT_(_SEPTIBBLE_(N1, N2, N3, N4, N5, N6, N7), _CAT_(__HEX_, N8))
और यहाँ रेनाटो का उपयोग उदाहरण है:
char b = _BYTE_(0100, 0001); /* equivalent to b = 65; or b = 'A'; or b = 0x41; */
unsigned int w = _WORD_(1101, 1111, 0100, 0011); /* equivalent to w = 57155; or w = 0xdf43; */
unsigned long int dw = _DWORD_(1101, 1111, 0100, 0011, 1111, 1101, 0010, 1000); /* Equivalent to dw = 3745774888; or dw = 0xdf43fd28; */
00010000
अष्टदल है, है ना? (और आपकी घोषणा एक प्रकार की याद आ रही है।)