说明:收录25万 73个行业的国家标准 支持批量下载
ICS35.060 L74 中华人民共和国国家标准 GB/T28169—2011 嵌 入式软件 C语言编码规范 Embeddedsoftware—Clanguagecodingspecification 2011-12-30发布 2012-06-01实施 中华人民共和国国家质量监督检验检疫总局 中国国家标准化管理委员会发布目 次 前言 Ⅲ ………………………………………………………………………………………………………… 引言 Ⅳ ………………………………………………………………………………………………………… 1 范围 1 ……………………………………………………………………………………………………… 2 规范性引用文件 1 ………………………………………………………………………………………… 3 术语和定义 1 ……………………………………………………………………………………………… 4 编码规范要求 1 …………………………………………………………………………………………… 4.1 总体要求 1 …………………………………………………………………………………………… 4.2 内存空间管理类 2 …………………………………………………………………………………… 4.3 中断处理类 3 ………………………………………………………………………………………… 4.4 系统接口类 3 ………………………………………………………………………………………… 4.5 硬件系统初始化类 3 ………………………………………………………………………………… 4.6 软件模块初始化类 3 ………………………………………………………………………………… 4.7 版面书写类 4 ………………………………………………………………………………………… 4.8 声明定义类 6 ………………………………………………………………………………………… 4.9 控制语句类 9 ………………………………………………………………………………………… 4.10 类型转换类 10 ……………………………………………………………………………………… 4.11 指针、数组使用类 11 ………………………………………………………………………………… 4.12 运算处理类 14 ……………………………………………………………………………………… 4.13 函数使用类 16 ……………………………………………………………………………………… 4.14 冗余类 17 …………………………………………………………………………………………… 4.15 程序效率类 17 ……………………………………………………………………………………… 5 符合性 18 …………………………………………………………………………………………………… 附录A(资料性附录) 符合性矩阵 19 ……………………………………………………………………… 参考文献 20 …………………………………………………………………………………………………… ⅠGB/T28169—2011 前 言 本标准按照GB/T1.1—2009给出的规则起草。 请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别这些专利的责任。 本标准由全国信息技术标准化技术委员会(SAC/TC28)提出并归口。 本标准起草单位:中国电子技术标准化研究所、珠海南方软件产品检测中心、炬力集成电路设计有 限公司、珠海许继电气有限公司、珠海优特电力科技股份有限公司、东信和平智能卡股份有限公司、深圳 市吉阳自动化科技有限公司、上海博泰悦臻电子设备制造有限公司、珠海银邮光电技术发展股份有限公 司、上海嵌入式系统应用工程技术研究中心、上海超算并行软件有限责任公司、上海鲁齐信息科技有限 公司、大连共创软件有限公司等。 本标准主要起草人:侯建华、潘海洋、杨哲军、张展新、张亚伟、罗庆霞、齐建华、陈勇、张旸旸、阳如坤、 于晓菁、代玉宏、吴智凯。 ⅢGB/T28169—2011 引 言 嵌入式系统是指以应用为中心,以计算机技术为基础,软硬件可剪裁,适应应用系统对功能、可靠 性、成本、体积和功耗严格要求的专门计算机系统。嵌入式系统几乎包括了生活中所有的电器设备,还 广泛应用于船舶、机床、仪表、工业自动化仪表及航空航天等领域。 尽管C语言是嵌入式软件开发的主要工具,然而C语言并非是专门为嵌入式系统应用而设计的。 因此,需要制定针对嵌入式系统软件的编码规范要求。 本标准是在理解标准C语言的基础上,结合嵌入式软件的开发实践以及嵌入式软件开发中常见的 不规范编码方式制定的,着重于软件的安全性、可读性,既可作为嵌入式软件开发中的编码要求,也可作 为软件交付时验收方的验证要求。 ⅣGB/T28169—2011 嵌入式软件 C语言编码规范 1 范围 本标准规定了使用C语言在嵌入式软件编程中的规范要求。本标准也给出了在嵌入式系统开发 中应该注意的与编码相关的事项。 本标准适用于嵌入式软件生存周期的C语言的设计、编码、测试及其使用。 2 规范性引用文件 下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文 件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。 GB/T15272 程序设计语言 C 3 术语和定义 GB/T15272界定的以及下列术语和定义适用于本文件。 3.1 副作用 sideeffect 在表达式执行后对程序运行环境可能会造成影响。赋值语句、自增等操作都是典型的具有副作用 的操作。 4 编码规范要求 4.1 总体要求 4.1.1 编程前应阅读硬件电路和芯片资料———熟悉芯片的各种存储器(区)、寄存器地址、中断服务、定 时器、通讯接口等功能,必要时应将相关信息加入程序注释中。 4.1.2 编程中应注意程序的存储空间———如指令空间大小、数据空间大小、堆栈空间大小等是否超出 系统有关限制。 4.1.3 使用联合体时,应明确该编译器联合体存储的细节———如联合体的末尾有多少个填充单位、联 合体的各个成员如何对齐、多字节的数据类型高低字节排放顺序等。 4.1.4 宜注意硬件系统复位和软件复位的方法和区别———在程序中宜使用芯片提供的看门狗功能实 现硬件系统复位。 4.1.5 宜注意CPU对各种存储器的访问速度———在程序中宜利用各种硬件设备自身的特点来提高 程序效率。 4.1.6 应注意所使用的编译器的目标CPU的位数、支持的C语言标准、调试程序所占用的内存、兼容 性等特点。 4.1.7 应注意编译器处理不同数据类型的原则及有关细节———如static类别的局部变量将在内存数 据区中生成,而非static类别的局部变量将在堆栈中生成。 4.1.8 应注意程序开发调试环境和实际应用环境的区别。 1GB/T28169—2011 4.1.9 应用程序宜使用操作系统驱动程序来调用硬件端口。 4.2 内存空间管理类 4.2.1 在使用malloc等函数获取内存时,应对分配失败做异常处理。 4.2.2 动态内存的申请与释放应配对,防止内存泄漏。应用场景主要包括: a) 过程或函数中分配的内存,在过程、函数退出之前要释放; b) 过程或函数中申请的(为打开文件而使用的)文件句柄,在过程、函数退出之前要关闭。 规范用法示例: intexample_fun(BYTEgt_len,BYTE*gt_code) { BYTE*gt_buf; gt_buf=(BYTE*)malloc(MAX_GT_LENGTH); ... /*globaltitlelengtherror*/ if(gt_len>MAX_GT_LENGTH) { free(gt_buf);//退出之前释放gt_buf returnGT_LENGTH_ERROR; } ... } 不规范用法示例: intexample_fun(BYTEgt_len,BYTE*gt_code) { BYTE*gt_buf; gt_buf=(BYTE*)malloc(MAX_GT_LENGTH); ... /*globaltitlelengtherror*/ if(gt_len>MAX_GT_LENGTH) { returnGT_LENGTH_ERROR;//退出之前没有释放gt_buf } ... } 4.2.3 不应使用已经释放的内存空间。 4.2.4 应防止越界操作数组、指针、内存地址等内存空间。 4.2.5 字符串连接宜使用strncat库函数代替strcat库函数,字符串拷贝宜使用strncpy库函数代替 strcpy库函数,避免长度不够引起的数组越界。 4.2.6 使用sprintf库函数时,应注意字符长度,避免长度不够引起的数组越界。 4.2.7 对于内存受限的系统,宜减少使用动态内存分配,多采用静态分配,在程序编译时就确定所需的 空间。 4.2.8 对于内存受限的系统,在分配内存时,应考虑内存碎片的问题。 2GB/T28169—2011

.pdf文档 GB-T 28169-2011 嵌入式软件 C语言编码规范

文档预览
中文文档 28 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共28页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
GB-T 28169-2011 嵌入式软件 C语言编码规范 第 1 页 GB-T 28169-2011 嵌入式软件 C语言编码规范 第 2 页 GB-T 28169-2011 嵌入式软件 C语言编码规范 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2025-07-13 02:56:50上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。