特殊宏意义

Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.4
Creation-Date: 2020-12-24T14:42:31+08:00

====== 宏 ======
创建日期 星期四 24 十二月 2020

#define U16_MAX_VALUE 0xFFFF
=>十六进制表示16位机器最大内存地址

#define U32_MAX_VALUE 0xFFFFFFFF
十六进制表示32位机器最大内存地址

#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*(a)))
=>计算数组a中有多少个元素

#define ALIGN_SIZE(x, size) (((x)+(size)-1)&~((size)-1))
=>获取一个最小且足够大的内存空间

#define IS_GROUP32_BIT_ONE(BIT_MAP, x) (((((uint32_t*)BIT_MAP)[(x)>>5]) >> ((x)&0x1F)) & (0x1))
=>判断数值BIT_MAP的bit位上第x位(起始位0)是0还是1,它是1则宏的结果是1,否则宏的结果是0。
=>如BIT_MAP = 1073741826(230+21), 当x = 30或x = 1,则宏的结果是1,否则宏的结果是0。

#define SET_GROUP32_BIT(BIT_MAP, x) ((((uint32_t*)BIT_MAP)[(x)>>5]) |= (1ul<< ((x)&0x1F)))
=>将数值BIT_MAP的bit位上第x位(起始位0, x < 32)上置1(原是0或1)。
=>如BIT_MAP = 2(2^1),x =30,经过宏运算后,BIT_MAP = 1073741826(230+21),IS_GROUP32_BIT_ONE(BIT_MAP, x)的结果是1,RESET_GROUP32_BIT(BIT_MAP, x)后,BIT_MAP = 2(2^1),IS_GROUP32_BIT_ONE(BIT_MAP, x)的结果0。
=>当BIT_MAP = 0,x = 40,经过宏运算后,BIT_MAP = 0,但IS_GROUP32_BIT_ONE(BIT_MAP, x)的结果是1,RESET_GROUP32_BIT(BIT_MAP, x)后,IS_GROUP32_BIT_ONE(BIT_MAP, x)的结果是0。

#define RESET_GROUP32_BIT(BIT_MAP, x) ((((uint32_t*)BIT_MAP)[(x)>>5]) &=(~ (1ul<< ((x)&0x1F))))
=>将数值BIT_MAP的bit位上第x位(起始位0)上置0(原是0或1)。

#define GROUP_BIT_SET(bit) (1ul<<(bit))
=>2的bit倍

#define GROUP_BIT_DEFAULT ((1<<group_state_max)-1)
=>…|00011111

#define GROUP_BIT_NO_IGOFF ((1<<GeneralMode) | (1<<MapMode) | (1<<SelfCheck))
=>…|00011100

#define GROUP_BIT_ONLY_IGOFF (1<<IGNOffMode)
=>…|00000010

#define GROUP_BIT_NO_SEIF ((1<<GeneralMode) | (1<<MapMode))
=>…|00011000

#define GROUP_BIT_ON_OFF ((1<<GeneralMode) | (1<<MapMode) | (1<<SelfCheck) | (1<<IGNOffMode))
=>…|00011110

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值