c++ - 定义 BIT0、BIT1、BIT2 等而不使用#define

标签 c++ bitmap bit-manipulation c-preprocessor

是否可以在 C++ 中以另一种方式在 C++ 中定义 BIT0、BIT1、BIT2 而无需使用#define?

#define BIT0 0x00000001
#define BIT1 0x00000002
#define BIT2 0x00000004

然后我用同样的东西从这些位中创建状态:

#define MOTOR_UP   BIT0
#define MOTOR_DOWN BIT1

注意:我只使用 32 位,而不是 64 位。我还使用 setBit(flagVariable, BIT)(因此是 clrBit 宏来做相反的事情)宏来设置位,然后比较该位是否使用按位设置运算符如

if (flagVariable & MOTOR_UP) { 
   // do something
   clrBit(flagVariable, MOTOR_UP);
}

C++ 中是否存在已经包含这些位掩码的类型?

最佳答案

您可以改用枚举:

enum {
  BIT1 = 1,
  BIT2 = 2,
  BIT3 = 4,
  ...
};

关于c++ - 定义 BIT0、BIT1、BIT2 等而不使用#define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3199761/

相关文章:

c++ - -!(condition) 是从 bool 值(掩码 bool 值)获取全位 vector 的正确方法吗?

c++ - 高效的位操作

c++ - 在 SFML 中移动一个球

android - 如何在内部存储中保存位图

java - Android - 使用另一个位图屏蔽位图

c# - 确定位图大小以保存文本字符串

javascript - 如何在按位运算期间 chop 大整数以模仿 Ruby 中的 JavaScript?

C++::与所有其他类共享类

c++ - 序列化时如何包含 vector 2 (jsoncpp)

c++ - 什么合法代码可以触发 C4523 "multiple destructors specified"Visual C++ 警告?