讲嵌入式C语言编码风格.pptVIP

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
讲嵌入式C语言编码风格

目 录 简介及说明 语言规则 1.基础 2.数据 3.说明与表达式 4.函数 5.内存及资源 6.源文件 风格指导 7.程序书写 8.命名 9.文档 简介及说明 正确性 易维护性 易移植性 代码的高效性 语言规则——基础 编写清晰表达设计思路和意图的代码 针对易读来优化代码, 效率优化留给编译器去做 编写可大声朗读的代码 利用注释阐述和解释代码,并进行总结 使用有意义且无歧义的命名方法.(推荐使用全英文的命名) 尽可能使用标准C 函数 不将同样的代码使用三次以上, 编写相应的函数 让程序自己检查运行中的错误-编写调试代码 谨慎使用GOTO语句 不要修补那些风格差的代码,重写他们 不要比较两个浮点数是否相等 优化代码或调试一旧版本前,备份并记录所做的修改 避免机器及编译器相关的代码,如必需,隔离相关代码 将编译器设为最高警告水平,把每一个警告视为错误来处理 不要直接在程序中直接书写常量,应该使用常量的宏定义 #include 的头文件没有被引用 在同一个编译单元内(一般是一C文件)重复引用同一头文件 在头文件内说明却仅仅在一个C文件中引用 全局变量仅仅在一个C文件中引用. (应该使用static 量) 在赋值中,左右两边的数据类型不一样. (如确实必须,应该显式地进行类型转换) 函数返回指向函数内说明的自动变量的指针. (应该使用指向static 变量的指针) 删除switch case 语句中的break语句(除非两个或多个case的处理代码是完全一致的, 这时应该加以注释。) 两个不同类型指针间的运算 隐含的数据类型转换 隐含的对于变量是否为0的测试 比如: “if (a = b)” ; 正确的写法是 “if ( (a = b ) != 0)” 缺少default 的switch 语句 表达式中假设了运算顺序 (不要怕写括号) 忽略函数的返回值, 如果函数不需要返回值可使用 (void) f(); 但如果程序中无 返回值函数的数量太多,则系统的设计可能有问题 模块间的依赖关系对于开发效率,可测性,可维护性都有很大的影响. 良好的依赖关系应该是简单的,层次化的,和非循环的. 函数间传递的参数越少越好,减少模块件的依赖关系和耦合程度,最大程度上实现对模块的封装,将模块内的复杂性屏蔽,而对外提供简洁的数据接口。 尽量减少全局变量的使用,局限在一个c文件中的全局变量应该说明为 static。 对于一组在逻辑上相关的变量,应该尽量将他们封装在结构中。 推荐使用 typedef 来进行数据类型的说明。 所有不同类型变量间的运算,必须显式地进行类型转换。(这一点对于不同类型的指针间运算尤其重要) 对于没有加 unsigned 修饰的类型, 应该小心处理可能的数据溢出 在程序( 函数或c文件 )的开始处对变量进行说明, 将相关的变量说明放在相邻的行 变量的说明应该遵循一个变量一行的原则, 除非所说明的变量是紧密相关的 将不变的变量说明为 const 尽量在变量的说明行中对变量进行初始化 避免不必要的全局变量 什么时候使用指针? 该变量在其有效期内可能表示不同的对象. 该变量表示一个任意的关系, 也即其可能为空. 使用指针可能有更高的效率(关键代码中)或更好的实现 避免无效的指针 假设任何指针都可能为空 使用NULL来比较指针,而不是0,仅有指针才会拥有NULL值 使用NULL 来表示指针不指向任何对象;使用 0x0 表示数值零; 使用 ’\0’表示字符串的结束. 只有在没有更好的变通情况下使用GOTO 语句 确保数组的存取没有越界 假设所有的临时变量再使用完毕后就被立刻清除 所有函数的入口参数都必须进行合法性检查 函数间的接口越简洁越好, 参数传递应该尽可能的简单 理想的函数应该仅有一个统一的返回点(出口) 对于某个具体的项目而言, 函数应该拥有尽量统一的返回值约定 函数的调用者应该检查函数的返回值 过深层次的嵌套调用应该充分考虑系统或该进程的堆栈大小, 防止堆栈溢出 每个函数前必须有相应的说明 所有函数的返回类型必须显式的定义, 没有返回值的函数应该说明为void 函数前必须有相应的说明-范例 /********************************************************* *FUNCTION NAME : test_func * *ARGUMENT: *in_arg1: brief description of the argument *in_arg2: brief description of the argument *in_arg3:

文档评论(0)

phltaotao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档