宏和枚举都可以将变量换一个别名
对比:
宏 枚举 差别 作用时期 存储形式
宏 预处理阶段 替换,程序运行 不存在
枚举 程序运行 后 起作用,枚举常量 存储 数据段 静态存储区里。
宏 占 代码段 空间,枚举 占空间 耗CPU资源。
若定义非常多的常量 一条enum {.....} 比大堆define更清晰
定义别名 :
预处理指令#define来完成这项工作,您的代码可能是:
#define U32 unsigned int
#define U16 unsigned short
#define S32 int
#define S16 short int
#define U8 unsigned char
#define S8 char
enum [ 枚举名 ] { 枚举元素列表 }
enum GPIO
{
GPIOA=0,
GPIOB,
GPIOC,
GPIOD,
GPIOE,
GPIOF,
GPIOG
};
(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。
(2) GPIO是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。
(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。
(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。
(5) 枚举型是预处理指令#define的替代。
(6) 类型定义以分号;结束。
typedef定义一个新的数据类型:GPIO_typedef
typedef enum
{
GPIOA=0,
GPIOB,
GPIOC,
GPIOD,
GPIOE,
GPIOF,
GPIOG
}GPIO_typedef;
在使用枚举变量时,主要关心的不是它的值的大小,而是其表示的状态。