能否用枚举值作为预编译判断【否】
1.所有的宏展开宏替换是在预编译阶段进行的。
2.枚举成员的值是在编译阶段确定的。
3.预编译是提前于编译的
参考
如何保护软件模块的定义
将数据定义放在模块xx.c文件中,C库中结构体的封装方法
这种方式的前提是模块xx需要有动态内存分配,通过create的方式,生成变量;
通过结构体+共用体的方式[忘记了是哪个视频里看到]
利用的是共用体的思路;
1.头文件中,定义结构体A 只有数组,用来外部声明变量用
2.结构体B定义在内部,将结构体A指针转换成结构体B指针来使用;
不知道 有没有更好的办法???
共用体
共用体的内存分配必须符合两项原则:
(1)共用体的内存必须大于或等于其他成员变量中最大数据类型(包括基本数据类型和数组)的大小
(2)共用体的内存必须是最宽基本数据类型的整数倍,如果不是,则填充字节。
platform
是一个硬件抽象层,为软件提供以下几个方面的支持
- 常用数据的定义
- 打印方式的实现
- 时基
- 中断的控制
使用时 只要在软件模块的头文件中,引入即可,模块的.c文件只包含该模块的头文件;
模块功能设计
模块的输出控制来说有几个过程
1-手动控制;外部接口实现直接控制输出的方式;
2-自动控制;根据模块输入处理后,引入闭环控制或者逻辑控制,实现功能上输出控制;
比如控制电机转速;
1-手动控制:直接控制电机的油门开度PWM值;
2-自动控制:根据输入的速度信息,自动控制油门开度;