0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

麦辣鸡腿堡 来源:嵌入式系统 作者:嵌入式系统 2023-12-07 14:42 次阅读

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

char ch; 
unsigned short int exam;  
ch = -1;
exam = ch; // 编译器不产生告警,此时exam为0xFFFF。

◎ 确认未使用的变量应当删除。
◎ 对于变量自增++和自减--,禁止在宏定义中使用,禁止和其他语句复合,因拆分单独执行。示例:if(++i>10) 错误写法,必须改为i++;if(i>10)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4983

    文章

    18286

    浏览量

    288503
  • 编码
    +关注

    关注

    6

    文章

    835

    浏览量

    54457
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48624
  • 变量
    +关注

    关注

    0

    文章

    596

    浏览量

    28112
收藏 人收藏

    评论

    相关推荐

    嵌入式代码规范

    嵌入式代码规范,自我认为很好,共享给大家
    发表于 06-26 13:45

    嵌入式C/单片机C/标准C知识点

    源于标准C,基本上是完全一样的,区别只有三点:  单片机C嵌入式C比标准C多了  1、中断函数;  2、特殊功能寄存器:例如P0、ACC、
    发表于 10-24 14:42

    嵌入式C语言之变量与常量详解

      目前,很多的C语言教材都是针对通用的计算机编程,创客学院嵌入式开发培训讲师针对嵌入式软件的开发特点。讲解嵌入式C语言在各种项目中要用到的
    发表于 07-05 09:51

    嵌入式小波编码算法的原理是什么?

    在基于小波变换的图象压缩方案,嵌入式零树小波 EZW(Embedded Zerotree Wavelets)[1]编码很好地利用小波系数的特性使得输出的码流具有嵌入特性。近年来,在对
    发表于 08-15 08:27

    嵌入式c语言编码规范

    `学习嵌入式的同学应该首先掌握嵌入式编码规范,这样才能更好的嵌入式系统。下面就从这几个方面讲解一下嵌入式
    发表于 10-31 14:50

    嵌入式c语言编码规范

    学习嵌入式的同学应该首先掌握嵌入式编码规范,这样才能更好的嵌入式系统。下面就从这几个方面讲解一下嵌入式
    发表于 11-07 15:17

    嵌入式Linux C代码规范

    本文档为作者 在嵌入式嵌入式 linux C语言的学习和工作中所总结的代码规范 ,是作者从 STM32单片机开发向 Linux C开发的时
    发表于 01-14 10:25

    (精彩帖子合集)国外大牛带你入门嵌入式C语言!

    语言学习文章,大家循序渐进,必定能够学有所成! 嵌入式应用程序的C编程语言简介了解C编程变量了解C
    发表于 09-09 16:09

    何在嵌入式操作系统ARM Linux实现ZLG7290的驱动?

    I2C总线接口的工作模式和特点如何在嵌入式操作系统ARM Linux实现ZLG7290的驱动?I2C总线在传送数据过程中有哪几种信号?
    发表于 04-23 06:00

    WIFI网卡如何在嵌入式Linux

    仅用于增加百度收录权重,排版未优化,日常不维护。请访问: 查看、评论。本博文对应地址: 嵌入式Linux——WIFI网卡/#more如何在嵌入式Linux,使用WIFI无线网卡。
    发表于 11-04 08:26

    嵌入式C的静态变量是什么

    不是持续长久的,当程序使用完后,系统会自动删除回收在嵌入式系统,为了追求项目的可靠性,因此会较常使用静态变量。静态变量的基本划分静态变量
    发表于 12-15 07:08

    嵌入式C开发变量类型的使用方法

    了所以嵌入式编程中经常会使用char定义变量,注意:char只能表示-128到127,unsigned char可以表示0到255。下面是嵌入式常用的typedef定义的数据类型typedef...
    发表于 12-15 06:35

    嵌入式C语言之变量与常量简析

      如何学习编程c++语言?粤嵌来讲解嵌入式C语言在各种项目中要用到的知识点,尤其是嵌入式C语言之变量
    发表于 12-15 06:27

    在esp8266上进行嵌入式c编程所需的任何资源和软件环境是什么?

    大家好,如何在 esp8266 上进行嵌入式 C 编程???在网上,它们是使用其内置库对其进行编码的资源……但我想在寄存器级别上编程和使用 esp8266。那么在 esp8266 上进
    发表于 02-23 08:16

    嵌入式软件之c语言编码规范

    嵌入式软件之c语言编码规范
    发表于 10-28 18:13 28次下载