Creates a bit mask based on a single bit-number position.
lib_def.h
DEF_BIT(bit); DEF_BIT08(bit); DEF_BIT16(bit); DEF_BIT32(bit); DEF_BIT64(bit); |
bit
Bit number of the bit mask to set.
Bit mask with the single bit
number position set.
None.
bit
should be a non-negative integer.
bit
values that overflow the target CPU and/or compiler environment (e.g. negative or greater-than-CPU-data-size values) may generate compiler warnings and/or errors.
To avoid overflowing any target CPU and/or compiler’s integer data type, unsigned bit constant 1
is either cast to specified integer data type size or suffixed with long
integer modifier, ‘L
’. This may still be insufficient for CPUs and/or compilers that support long long
integer data types, in which case ‘LL
’ integer modifier should be suffixed. However, since almost all 16- and 32-bit CPUs and compilers support long
integer data types but many may not support long long
integer data types, only long
integer data types and modifiers are supported.
CPU_INT16U mask_16; CPU_INT32U mask_32; mask_16 = DEF_BIT(12u); mask_16 = DEF_BIT16(15u); mask_32 = DEF_BIT(19u); mask_32 = DEF_BIT16(23u); /* 16-bit shift macro overflows; sets mask_32 = 0 */ mask_32 = DEF_BIT32(28u); /* 32-bit shift macro correctly sets mask_32 = 0x10000000 */ |