1.关于枚举,枚举是将同类型的值全部列出的一种行为。
枚举可以自行赋值,赋值后声明的量就可以直接拿来当值使用,下面就是一个例子
STM32的库将GPIO端口的类型进行枚举后,我们再初始化的时候,就可以直接拿来使用。
这样做有一个最大的好处是,可读性要更强。下面两个是相同操作,但是前者要更加明确。
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Mode = 0x10;
typedef enum
{ GPIO_Mode_AIN = 0x0,
GPIO_Mode_IN_FLOATING = 0x04,
GPIO_Mode_IPD = 0x28,
GPIO_Mode_IPU = 0x48,
GPIO_Mode_Out_OD = 0x14,
GPIO_Mode_Out_PP = 0x10,
GPIO_Mode_AF_OD = 0x1C,
GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;
2.枚举可以不赋值,在使用的时候可以直接进行使用,系统回对第一个赋值0,后面逐个加1
这样使用有几个好处,
第一个就是可读性强,文字要比数字表达的含义明显,特别是枚举里面的量特别多的时候。
第二个就是调用方便,假如要在数组中要使用CO2时,直接写STATE[CO2];不用去逐个数。(这里是举例)
第三个是有个使用技巧,就是变量总数,因为是从0开始数的,假设10个变量的话,第10个变量,会赋值为9,我们再加一个state_sum,state_sum就会等于10.
这个技巧后面会用的比较多。
#include "stdio.h"
int main()
{
enum
{
CO2,
PM2.0,
TEMPER,
.....
state_sum
};
printf("week1 = %d",week1);
}