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)
本文来自博客园,作者:变秃了也就变强了,转载请注明原文链接:https://www.cnblogs.com/lichangyi/p/18239554