MISRA C:2012 Rule-15.4解析
MISRA-C:2012 规则适用于消息 0771:
Rule-15.4 (建议)对任何迭代语句至多只应有一条break 语句或goto 语句用于循环的结束
规则
规则与等级对应关系(QAC)
[0771]
用于中断循环语句的'break' 语句超过1个
用于中断循环语句的'break'语句超过1个,例如: 'while'循环语句、'do ... while' 循环语句或者 'for' 循环语句。如果同一个循环中使用了多个 'break' 语句,那么代码的结构会变得危险。
官方示例
/*PRQA S 2017,3408,3447 ++*/
extern int x;
extern int y;
extern int z;
extern void foo(int n)
{
while (n > 0)
{
--n;
if (n == x)
{
break; /* Message 0769 */
}
if (n == y)
{
break; /* Message 0771 */
}
if (n == z)
{
break; /* Message 0771 */
}
}
}
修改举例
违反规则的例子
修改后
注意事项
通过合并或反转判断条件达到消灭break的目的
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:184
阅读量:69
阅读量:106
阅读量:87
阅读量:146