《C语言编程规范》.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
规则15.5 (强制) 每条 switch 语句必须包含至少一个 case 分支。(MISRA C:2004-Rule 15.5) switch (x) { uint8_t var; /* 不符合规则: 在第一个 case 语句之前定义*/ case 0: a = b; break; /* 这里的 break 是必须的 */ case 1: /* 空的分支中可以不用 break */ case 2: a = c; if (a == b) { case 3: /* 不符合规则:case 3 最内的上层复合语句是 if 的主体 */ } case 4: a = c; /* 不符合规则:不为空的分支必须以 break 结束 */ default: /* 必须有 default 语句 */ errorflag =1; /* default 分支尽量不为空 */ break; } 规则16.1 (强制) 不允许定义参数数量不确定的函数。(MISRA C:2004-Rule 16.1) 规则16.1 (强制) 不允许定义参数数量不确定的函数。(MISRA C:2004-Rule 16.1) 规则16.3 (强制) 在函数的原型声明中应给出所有形参的标识符。(MISRA C:2004-Rule 16.3) 规则16.4 (强制) 在函数声明和定义中使用的标识符应当一致。(MISRA C:2004-Rule 16.4) 规则16.5 (强制) 无形参的函数应将形参类型声明为 void 类型。(MISRA C:2004-Rule 16.5) 规则16.7 (强制) 非空返回值的函数的所有退出路径必须有一显式的带表达式的return 语句。(MISRA C:2004-Rule 16.8) 规则16.8 (强制) 函数标识符只允许以下两种用法:使用一个前缀+函数标识符,或者函数标识符+(参数列表)。参数列表可以为空。(MISRA C:2004-Rule 16.9) if( fun ) /* 不符合规则*/ { /*...*/ } 规则17.1 (强制) 只有指向数组的指针才允许进行指针算术运算。(MISRA C:2004-Rule 17.1) 此处的指针算术运算只仅仅限定于指针加减某个整数,比如 ppoint = ppoint - 5, ppoint++等。对于不是指向类似 array 对象的元素的指针,执行加或减的操作是没有定义的。 即使是指向 array 对象元素的指针, 由于不能保证运算后得到的是有效的地址 (比如超过数组长度),所以对指针进行代数运算是不安全的,应谨慎对指针进行代数运算。 规则17.2 (强制) 只有指向同一个数组的两个指针才允许相减。(MISRA C:2004-Rule 17.2) 指针的相减操作只有在它们指向同一个 array 对象时,结果才是充分定义的,例如,UINT_16 *q = p + i, 那么可以通过 q-p 得到 i 的值。两个指针可指向同一数组的不同成员。 规则17.3 (强制) 只有指向同一个数组的两个指针才允许用、 =、 、 =等关系运算符进行比较。(MISRA C:2004-Rule 17.3) 规则17.4 (强制) 只允许用数组索引 (下标) 做指针运算。 (MISRA C:2004-Rule 17.4) uint8_t a[10]; unit8_t *p; p = a; *(p+5) = 0 /*不符合规则:指针显式运算*/ p[5] = 0 /*符合规则*/ void my_fun(uint8_t * p1, uint8_t p2[]) { uint8_t index = 0; uint8_t *p3; uint8_t *p4; *p1 = 0; p1 ++; /* 不允许, p1 不是指向数组的指针 */ p1 = p1 +5; /* 不允许, p1 不是指向数组的指针 */ p1[5] = 0; /* 不允许, p1 不是指向数组的指针 */ p3 = p1[5]; /* 不允许:p1 不是指向数组的指针 */ p2[0]

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档