嵌入式C学习第二课

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

感谢大佬!!!!!!!

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值