如何在嵌入式C编码中规范变量

◎ 不用或者少用全局变量
说明:单个文件内部可以使用static的全局变量,可以将其理解为类的私有成员变量。全局变量应该是模块的私有数据,不能作用对外的接口使用,使用static类型定义,可以有效防止外部文件的非正常访问。直接使用其他模块的私有数据,将使模块间的关系逐渐走向“剪不断理还乱”的耦合状态,这种情形是不允许的。
◎ 避免局部变量与全局变量同名。
说明:尽管局部变量和全局变量的作用域不同而不会发生语法错误,但容易使人误解。
◎ 严禁使用未经初始化的变量。
◎ 明确全局变量的初始化顺序,避免跨模块的初始化依赖。
说明:系统启动阶段,使用全局变量前,要考虑到该全局变量在什么时候初始化,两者之间的时序关系,谁先谁后,一定要分析清楚,不然后果往往是低级而又灾难性的。
◎ 数据必须对外开放时,应封装接口函数来读写,同时注意全局数据的访问互斥。
说明:避免直接暴露内部数据给外部模型使用,是防止模块间耦合最简单有效的方法。
◎ 一个变量只有一个功能,不能把一个变量用作多种用途。
说明:一个变量只用来表示一个特定功能,不能把一个变量作多种用途,即同一变量取值不同时,其代表的意义也不同。
◎ 数据结构功能单一,不要设计面面俱到的数据结构。
说明:相关的一组信息才是构成一个结构体的基础,结构的定义应该可以明确的描述一个对象,而不是一组相关性不强的数据的集合。设计结构时应力争使结构代表一种现实事务的抽象,而不是同时代表多种。结构中的各元素应代表同一事务的不同侧面,而不应把描述没有关系或关系很弱的不同事务的元素放到同一结构体中。
◎ 尽量减少没有必要的数据类型默认转换与强制转换。
说明:当进行数据类型强制转换时,其数据的意义、转换后的取值等都有可能发生变化,而这些细节若考虑不周,就很有可能留下隐患。
示例:如下赋值,多数编译器不产生告警,但值的含义有变化。
char ch; unsigned short int exam; ch = -1;exam = ch; // 编译器不产生告警,此时exam为0xffff。◎ 确认未使用的变量应当删除。
◎ 对于变量自增++和自减--,禁止在宏定义中使用,禁止和其他语句复合,因拆分单独执行。示例:if(++i>10) 错误写法,必须改为i++;if(i>10)

小米游戏本新品或下月发布
STM32如何高效接收串口数据?
立柱式机器人码垛机的设备特点和工作原理是什么
新思科技完成对MorethanIP的收购
苹果有意将TouchID重新添加到iPhone中
如何在嵌入式C编码中规范变量
意法半导体推出第二代工业4.0级边缘AI微处理器
研华IDP31ProFlat工业触控显示器系列,可支持多达10点触控
什么是单片机语音芯片?
柯达破产重组的教训
浅谈数据中心精细化建设策略分析
华为主张“平台+AI+行业智慧+生态”推动智能世界加速到来
人工智能融合赋能平台,助力智慧城市智能化升级
常见PCB可靠性问题和典型案例
XL3002降压式DC/DC变换器中午资料(特性_引脚功能_典型驱动电路)
百度正式成立智能生活事业群 聚焦对话式人工智能
艾普凌科最新推出了S-19720系列车载电压跟踪器
【解决方案】安科瑞商业综合体电气综合管理平台技术方案
石墨烯掺杂载流子诱导RKKY的物理机制 实现对原子间自旋交换作用及其调制
化工机械厂安全防范系统的组成和如何实现设计