typedef 类型别名
typedef用于为现有类型创建一个新的名字,称为类型别名,可简化变量的定义。在嵌入式系统开发中, typedef常用于定义结构体别名和枚举类型了。
struct _GPIO
{
__IO uint32_t MODER;
__IO uint32_t OTYPER;
......
};
上述指令定义了一个结构体 _GPIO。
结构体
结构体是一种工具,用这个工具可以定义自己的数据类型。
与数组相比,结构体中各个元素的数据类型可以不相同。
在嵌入式系统开发中,结构体可以将多个变量组合为一个有机的整体,例如将串口定义为一个结构体。
这样在需要调整入口参数时,可以直接通过修改结构体成员变量来完成,而不需要采用传统的修改函数定义的方法。
1、结构体的申明与使用方法比较灵活,其一般形式为:
struct 结构体名
{
类型名1 成员名1 ;
类型名2 成员名2 ;
……
类型名n 成员名n ;
} ;
2、当需要使用结构体类型的变量、指针变量和数组时,有以下三种方法:
方法一:
定义结构体类型时,同时定义该类型的变量。例如:
struct Student
{ char name[10];
char sex;
int age;
float score;
} stu1, *ps, stu[5]; // 定义结构体类型的普通变量、指针变量和数组
方法二:
先定义结构体类型,再定义该类型的变量。例如:
struct student
{ char name[10];
char sex;
int age;
float score;
};
struct student stu1, *ps, stu[5]; //定义结构体类型的普通变量、指针变量和数组
方法三:
先用类型定义符typedef为结构体类型命别名,再用别名定义变量。例如:
typedef struct [student]
{ char name[10];
char sex;
int age;
float score;
}STU;
STU stu1, *ps, stu[5];//用别名定义结构体类型的普通变量、指针变量和数组
3、结构体变量赋初值的方法:
struct [student]
{ char name[10];
char sex;
int age;
float score;
}
stu[2]={{"Li", 'F', 22, 90.5}, {"Su",'M', 20, 88.5}};
4、引用结构体变量中成员的方法:
结构体变量名. 成员名: stu1.name
结构体指针变量->成员名: ps-> name
(*结构体指针变量). 成员名: (*ps).name
结构体变量数组名. 成员名: stu[0].name
define 宏定义
Define是C语言中的预处理指令,用于宏定义可以提高源代码的可读性。常见的格式为:#define 标示符 字符串其中,“标识符”为所定义的宏名;“字符串”可以是常数、表达式和格式串等。
例如:
#define PLL_Q 7 //定义标识符PLL_Q的值为7
ifdef 条件编译
条件编译命令可以实现:当满足某条件时对一组语句编译,而条件不满足时编译另一组语句的功能。
常见的格式为:
#ifdef 标识符
程序段1
#else
程序段2
#endif
其功能为:当标识符已经被定义过,(一般是用#define命令定义),则对程序端1进行编译,否则编译程序段2。
参考文章:https://blog.csdn.net/weixin_45713725/article/details/112785364
感谢大佬!!!!!!!