c++

二进制标志位宏

c++

Posted by YiMiTuMi on August 15, 2023

二进制标志位

一个 int 类型具有32位,所以至少可以保存31个标志位。

添加、清除标志位宏

#ifndef ClearFlag
#define ClearFlag(_F,_SF)     ((_F) &= ~(_SF))
#endif

#ifndef SetMaskFlag
#define SetMaskFlag(_F,_SF)       ((_F) |= (_SF))
#endif

##例子

static const int MASK_FLAG_1 = 0x1;
static const int MASK_FLAG_2 = 0x2;
static const int MASK_FLAG_3 = 0x4;
static const int MASK_FLAG_4 = 0x8;
static const int MASK_FLAG_5 = 0x10;
static const int MASK_FLAG_6 = 0x20;


int iFlag = 0;

//添加标志位
SetMaskFlag(iFlag, MASK_FLAG_1);

//清除标志位
ClearFlag(iFlag, MASK_FLAG_2);