欢迎来到天天文库
浏览记录
ID:11528106
大小:197.50 KB
页数:44页
时间:2018-07-12
《软件编程规范(misrac)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、软件编程规范目录一环境二语言扩展三文档四字符集五标识符六类型七常量八声明与定义九初始化十数值类型转换十一指针类型转换十二表达式十三控制语句表达式十四控制流十五switch语句十六函数十七指针和数组十八结构与联合十九预处理指令二十标准库二十一运行时错误44一环境规则1.1(强制):所有代码都必须遵照ISO9899:1990“Programminglanguages-C”,由ISO/IEC9899/COR1:1995,ISO/IEC9899/AMD1:1995,和ISO/IEC9899/COR2:1996修订。规则1.2(强制):
2、不能有对未定义行为或未指定行为的依赖性。这项规则要求任何对未定义行为或未指定行为的依赖,除非在其他规则中做了特殊说明,都应该避免。如果其他某项规则中声明了某个特殊行为,那么就只有这项特定规则在其需要时给出背离性。规则1.3(强制):多个编译器和/或语言只能在为语言/编译器/汇编器所适合的目标代码定义了通用接口标准时使用。如果一个模块是以非C语言实现的或是以不同的C编译器编译的,那么必须要保证该模块能够正确地同其他模块集成。C语言行为的某些特征依赖于编译器,于是这些行为必须能够为使用的编译器所理解。例如:栈的使用、参数的传递和数
3、据值的存储方式(长度、排列、别名、覆盖,等等)。规则1.4(强制):编译器/链接器要确保31个有效字符和大小写敏感能被外部标识符支持。ISO标准要求外部标识符的头6个字符是截然不同的。然而由于大多数编译器/链接器允许至少31个有效字符(如同内部标识符),因此对这样严格而并不具有帮助性的限制的适应性被认为是不必要的。必须检查编译器/链接器具有这种特性,如果编译器/链接器不能满足这种限制,就使用编译器本身的约束。规则1.5(建议):浮点应用应该适应于已定义的浮点标准浮点运算会带来许多问题,一些问题(而不是全部)可以通过适应已定义的
4、标准来克服。其中一个合适的标准是ANSI/IEEEStd754[21]。同规则6.3相一致,浮点类型的定义提供了一个注释所用浮点标准的机会,如:/*IEEE754single-precisionfloating-point*/typedeffloatfloat32_t;44二语言扩展规则2.1(强制):汇编语言应该被封装并隔离。在需要使用汇编指令的地方,建议以如下方式封装并隔离这些指令:(a)汇编函数、(b)C函数、(c)宏。出于效率的考虑,有时必须要嵌入一些简单的汇编指令,如开关中断。如果不管出于什么原因需要这样做,那么最好
5、使用宏来完成。需要注意的是,内嵌的汇编语言的使用是对标准C的扩展,因此也需要提出对规则1.1的背离。#defineNOPasm(“NOP”);规则2.2(强制):源代码应该使用/*…*/类型的注释。这排除了如//这样C99类型的注释和C++类型的注释,因为它在C90中是不允许的。许多编译器支持//类型的注释以做为对C90的扩展。预处理指令(如#define)中//的使用可以改变,/*…*/和//的混合使用也是不一致的。这不仅是类型问题,因为不同的编译器(在C99之前)可能会有不同的行为。规则2.3(强制):字符序列/*不应出现
6、在注释中。C不支持注释的嵌套,尽管一些编译器支持它以做为语言扩展。一段注释以/*开头,直到第一个*/为止,在这当中出现的任何/*都违反了本规则。考虑如下代码段:/*somecomment,endcommentmarkeraccidentallyomitted<>Perform_Critical_Safety_Function(X);/*thiscommentisnotcompliant*/在检查包含函数调用的页中,假设它是可执行代码。因为可能会省略掉注释的结束标记,那么对安全关键函数的调用将不会被执行。规则2
7、.4(建议):代码段不应被“注释掉”(commentout)。当源代码段不需要被编译时,应该使用条件编译来完成(如带有注释的#if或#ifdef结构)。为这种目的使用注释的开始和结束标记是危险的,因为C不支持嵌套的注释,而且已经存在于代码段中的任何注释将影响执行的结果。三文档44规则3.1(强制):所有实现定义(implementation-defined)的行为的使用都应该文档化。本规则要求,任何对实现定义的行为的依赖——这些行为在其他规则中没有特别说明的——都应该写成文档,例如对编译器文档的参考。如果一个特定的行为在其他规
8、则中被显式说明了,那么只有那项规则在其需要时给出背离。完整问题的描述详见ISO9899:1990附录G[2]。规则3.2(强制):字符集和相应的编码应该文档化。例如,ISO10646[22]定义了字符集映射到数字值的国际标准。出于可移植性的考虑,字符常量和字符串只能包含映射到
此文档下载收益归作者所有