如何优雅地使用全局标志位

在嵌入式软件开发过程中,相信很多人,特别是初学者都使用过全局变量。过多地使用全局变量以及管理不当的话,大量使用在不同的源文件函数中,容易导致逻辑混乱,代码阅读困难,后续维护成本越来越高的问题。但很多时候为了方便或快速实现任务间的同步或信号传递等功能需求,避免不了要使用。这里推荐一个本人使用的方法,个人觉得非常好用,分享出来。

//定义一个全局位使用枚举变量
typedef enum enumFlag
{
    FLAG_NULL = 0,
    FLAG_GLOBALVAR_1 = 1 << 0, //根据实际项目命名有意义的名字
    FLAG_GLOBALVAR_2 = 1 << 1,
    FLAG_GLOBALVAR_3 = 1 << 2,
    FLAG_GLOBALVAR_4 = 1 << 3,
    FLAG_GLOBALVAR_5 = 1 << 4,
    FLAG_GLOBALVAR_6 = 1 << 5,
}enumFlagTypedef;
extern enumFlagTypedef Flag;
//操作接口
#define Flag_set(f) Flag |= (f)
#define Flag_clr(f) Flag &= ~(f)
#define Flag_get(f) (Flag & (f))

上述方法优势:

  1. 通过位的方式可以节省空间,对于使用一个字节来定义一个全局标志位;
  2. 每个全局位命名有意义的名字,方便阅读,集中一起方便管理和维护;
  3. 提供了统一的操作接口,如状态读取,修改等操作;
  4. 简单易懂,使用门槛低;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值