近日在学习stm32的过程中遇到一些问题,特重新学习了一下C语言关于枚举、结构体、共用体类型的用法,现总结如下>>>
目录
·C枚举类型
基本定义
在stm32中的应用
·C结构体类型
基本定义
初始化
作为函数参数
在stm32中的应用
·C共用体类型
基本定义
内存空间
共用
·C枚举类型
基本定义
首先,在谈enum的用法之前,要了解const的作用,我们知道const是一种定义常量的数据类型,即被定义的量不可改变数值 ,通常是用作为一些数值冠上一个名字,使得代码可读性更好,比如
const int true = 1;
const int false = 0;
switch(result)
{
case true: /* 写入对应函数*/
break;
case false: /*写入对应函数*/
break;
}
或者也可以用宏定义来给常量取名字,但此时常量并没有数据类型,关于const定义与#define宏定义详细的区别,可戳此处https://blog.csdn.net/just_mccc/article/details/108251183
#define true 1
#define false 0
而如果需要定义的常量数量大且种类繁多,就会显得冗余,代码移植性差,在stm32f10x标准库函数中,有大量不同种类的常量,这时候就需要用到enum枚举类型对常量进行归类。先看一个例子>>>
/*有多种定义形式*/
enum time
{hour, minute = 25, second}now;
enum
{hour, minute = 25, second}now;
enum time
{hour, minute = 25, second};
enum基本用法如上所示,可以有多种形式进行枚举类型定义。time作为枚举类型名字通常并不使用,用的是大括号中的枚举元素,且编译器会将这些元素当作整形常量处理,在数值方面,如果第一个元素没有赋值,会默认为0,后面没有被赋值的元素的数值为前一元素值加1,在取用枚举元素的值时就可以直接使用枚举元素。在赋值方面,枚举元素可以直接赋给int类型变量,但int类型常量不能直接赋给枚举类型变量,需要强制转换才能完成。
printf("The time is %02d : %02d : %02d",