【学习笔记】软件基础

本文介绍了如何在C编程中通过将数据定义放在模块xx.c文件的结构体和共用体中保护和管理,同时提及了共用体内存分配的原则以及如何利用硬件抽象层platform进行数据定义的标准化。模块化开发中,只需在头文件中引入平台支持,c文件专注于模块功能实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

能否用枚举值作为预编译判断【否】

1.所有的宏展开宏替换是在预编译阶段进行的。
2.枚举成员的值是在编译阶段确定的。
3.预编译是提前于编译的
参考

如何保护软件模块的定义

将数据定义放在模块xx.c文件中,C库中结构体的封装方法
这种方式的前提是模块xx需要有动态内存分配,通过create的方式,生成变量;

通过结构体+共用体的方式[忘记了是哪个视频里看到]

利用的是共用体的思路;
1.头文件中,定义结构体A 只有数组,用来外部声明变量用
2.结构体B定义在内部,将结构体A指针转换成结构体B指针来使用;
不知道 有没有更好的办法???

共用体

共用体的内存分配必须符合两项原则:

(1)共用体的内存必须大于或等于其他成员变量中最大数据类型(包括基本数据类型和数组)的大小

(2)共用体的内存必须是最宽基本数据类型的整数倍,如果不是,则填充字节。

platform

是一个硬件抽象层,为软件提供以下几个方面的支持

  • 常用数据的定义
  • 打印方式的实现
  • 时基
  • 中断的控制

使用时 只要在软件模块的头文件中,引入即可,模块的.c文件只包含该模块的头文件;

模块功能设计

模块的输出控制来说有几个过程
1-手动控制;外部接口实现直接控制输出的方式;
2-自动控制;根据模块输入处理后,引入闭环控制或者逻辑控制,实现功能上输出控制;
比如控制电机转速;
1-手动控制:直接控制电机的油门开度PWM值;
2-自动控制:根据输入的速度信息,自动控制油门开度;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值