先说结论:strcut是各种基本数据类型变量的集合,相当于把一堆相关变量的声明放在一个篮子;enum是字符变量的集合,相当于把一堆#define定义的字符变量放在了一个篮子。例如如下代码:
学生的姓名、性别、年龄和成绩等变量是和学生本人相关的,我们把他打包放到一个“篮子”结构体struct中。
//声明一堆学生信息的变量
char name[30]; //姓名
char sex; //性别
int age; //年龄
float score; //成绩
//把这堆学生信息的变量打包放到“篮子”里
struct Student
{
char name[30]; //姓名
char sex; //性别
int age; //年龄
float score; //成绩
};//声明结构体
系统的各种状态等字符常量是和系统相关的,我们把他打包放到一个“篮子”枚举enum中,省去了反复书写#define的麻烦。
//使用#define定义一堆系统相关的字符常量
#define DAT_RST 0x01 //系统复位信息
#define DAT_SYS_STS 0x02 //系统状态
#define DAT_SELF_CHECK 0x03 //系统自检结果
#define DAT_CMD_ACK 0x04 //命令应答
#define CMD_RST_ACK 0x80 //模块复位信息应答
#define CMD_GET_POST_RSLT 0x81 //读取自检结果
//把这堆系统相关的字符常量打包放到“篮子”里
enum SysID
{
DAT_RST = 0x01, //系统复位信息
DAT_SYS_STS = 0x02, //系统状态
DAT_SELF_CHECK = 0x03, //系统自检结果
DAT_CMD_ACK = 0x04, //命令应答
CMD_RST_ACK = 0x80, //模块复位信息应答
CMD_GET_POST_RSLT = 0x81, //读取自检结果
};
注意:因为struct中是变量的集合,所以每个变量后面都要加“;”这个语句结束标志;而enum中是常量的集合,所以后面要加“,”隔开。