- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
童梦无忧网 试管婴儿论坛
本文由cqc2004贡献
pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
嵌入式 C 语言代码标准
Bupt_united
关键词: 编程标准, C 语言,嵌入式 作者:黄鹏程 核准认可:郭莉 日期: 2008-03-01 Date:
修改记录
版本 1 日期 2008-3-1 修改人 改动内容 黄鹏程 初稿 所有 改动涉及部分或页码
目录
导言…… 4 1.1. 文档范围 …… 4 1.2. 文档简介 …… 4 2. 概要…… 4 3. 命名约定 …… 4 3.1. 概述 …… 4 3.2. 函数名称 …… 4 3.3. 变量名称 …… 5 3.4. 文件名称 …… 5 3.5. 其他名称 …… 5 4. 变量,运算符和表达式…… 5 5. 函数…… 13 6. 语句和控制流 …… 14 7. 代码注释 …… 15 7.1. 头文件 …… 15 7.2. 源文件 …… 16 8. 可读性…… 16 9. 参考文献 …… 19 10. 附录 A. 头文件模版…… 19 11. 附录 B. 实现文件模版…… 20 1.
1. 导言
1.1. 文档范围
该文档描述了由 Bupt_United 嵌入式开发小组达成共识的 C 语言代码规范,同时这些指导方针将在以 后的所有软件开发时被采用。对于现有的开源代码,没有必要根据本文档全部改写,但是建议在适当地方 进行修改已达到提高代码质量和统一性的目的。
1.2. 文档简介
在书写这个份文档时有三个目标一直萦绕于脑海之中: 1. 代码应该具有健壮性,没有错误。 2. 代码应该易于阅读理解,易于重用。 3. 代码应该便于维护。 该文档的每一个部分均包含了嵌入式开发领域所推崇的代码规范(☆)和代码建议(◎) 。在日后的 开发中,规范是必须严格遵循,而代码建议则可以作为参考。如果一个程序员违反了该规范,那他必须把 充足和清晰的理由写在代码注释上。这涉及到在编程风格中一个比较关键的方面,那就是一致性. 总之, 尽可能的在整个程序或模块中使用同一个代码准则。 尽管如此,这些准则允许程序员有权利根据实际情况采取适当措施已达到高效的代码。这是指在利用 现有开源代码的时候不必要为了满足代码规范而对原代码进行大量修改,请尊重原作者的编程风格。若要 在其基础上开发,那么请延续原作者的编程风格。
2. 概要
☆所有代码都应该符合 ANSI 标准,并且至少在 Gcc3.3.2 下无警告的编译通过。所有不能避免的警告都应 在代码注释中一一注明。
3. 命名约定
3.1. 概述
☆清晰并且含有实际意义的名字是编写便于理解和维护的代码的最基本要素。每一个命名必须清晰的表达 出代表的含义。名字的长度一般不要过长或过短。过长的名字会增加工作量,使程序逻辑流程变得模糊; 过短的名字无法表达符号的实际意义。约定长度范围:3-31; ☆尤其要避免在全局变量中使用抽象的名字。
3.2. 函数名称
☆ 函数名称必须表示尽可能的清楚表示函数的动作,或者表达函数将传出的信息。 ☆ 函数名称应该命名为该模块名称的前束范式,要尽可能简短达意。
☆ 函数名一般要求由两部分组成:动词+名词(这个动作的受动者) 。例外的是查询功能,在第二部分 不是一个名词,但整个名称应该形成一个问题。每一个组成函数的单词开头都是要大写的,要是代 表 模 块 名 称 的 , 则 开 头 则 小 写, 例 如 以 下 名 称 是 规 范 的 : chatCloseSession, gpsSetTime and driveIsActive.
3.3. 变量名称
☆ 每一个变量的名称和类型都应该在使用时显而易见。例如,阅读程序的人会认为 counter 应该为 int 型, motorSet 应该是一个 BOOLEAN 型,或者是一个代表一个设备的数组。 ☆ 名字可以在比较长的时候可以形成复合词,开头由小写字母开头,不同的单词由大写字母分开,不 允许用下划线(附加指针标识符除外) ,下划线应该在定义的宏中作为分隔符。例如:sessionId 是 符合标准的。 ☆ 全局变量也应该符合上述命名规则,但是每个单词都应该以大写开头,例如 ExposureTime 是符合标 准的。 ☆ 指针变量必须清楚用“_p”标示,例如 struct s * meaningfulName_p
3.4. 文件名称
☆ ☆ ☆ ☆ 文件名应该代表文件的内容或者在整个工程中的角色,开头要是该模块的前缀范式。 头文件应该以“.h”为扩展
文档评论(0)