MISRA C:2012 Rule­-15.4解析

2025-10-21 02:24:22

MISRA-C:2012 规则适用于消息 0771:

Rule-15.4  (建议)对任何迭代语句至多只应有一条break 语句或goto 语句用于循环的结束

规则

规则与等级对应关系(QAC)

MISRA C:2012 Rule­-15.4解析

[0771]

用于中断循环语句的'break' 语句超过1个

MISRA C:2012 Rule­-15.4解析

用于中断循环语句的'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 */

        }

    }

}

MISRA C:2012 Rule­-15.4解析

修改举例

违反规则的例子

MISRA C:2012 Rule­-15.4解析

修改后

MISRA C:2012 Rule­-15.4解析

注意事项

通过合并或反转判断条件达到消灭break的目的

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢