enum用法

1. 基本用法

enum Color { //Color被称为枚举类型
    RED,     //默认是0开始
    GREEN = 5,
    BLUE
};

enum Color myColor; //enum Color
myColor = RED; // myColor = 0
myColor = BLUE; // myColor = 6

2. 使用typedef简化代码(推荐)

typedef enum {
    RED,     // 0
    GREEN,
    BLUE
} Color;

Color myColor;
myColor = GREEN; // myColor = 1

3. 注意点

  • 枚举类型默认为整型,因此不用再在内部声明
  • 如果想在C和C++中使用++运算符,必须声明为int才能兼容,unsigned char在C++中不能++的

4. 具体应用

4.1 用于函数的返回值

typedef enum  // .h文件中
{
  HAL_OK       = 0x00U,
  HAL_ERROR    = 0x01U,
  HAL_BUSY     = 0x02U,
  HAL_TIMEOUT  = 0x03U
} HAL_StatusTypeDef;
//.c文件中
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
{
      return HAL_OK; //HAL_ERROR/HAL_BUSY/HAL_TIMEOUT
}

//其他
typedef enum
{
  RESET = 0U,
  SET = !RESET
} FlagStatus, ITStatus;

typedef enum
{
  DISABLE = 0U,
  ENABLE = !DISABLE
} FunctionalState;
#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))

typedef enum
{
  SUCCESS = 0U,
  ERROR = !SUCCESS
} ErrorStatus;
//区分State和Status(区分不来)

4.2 使用enum进行位掩码

typedef enum {
    OPTION_A = 1 << 0, // 0001
    OPTION_B = 1 << 1, // 0010
    OPTION_C = 1 << 2  // 0100
} Options;

4.3 枚举的范围(C++11)

posted @ 2024-06-09 14:39  变秃了也就变强了  阅读(7)  评论(0编辑  收藏  举报