MISRA违规规则15.5:检测到多个出口点。函数应该在函数末尾有一个退出点

时间:2017-11-23 04:30:36

标签: c misra

我试图从我的代码中删除规则15.5。这基本上是因为函数中有多个返回值。

代码如下:

int32_t
do_test(int32_t array[])
{  
    for(int32_t i=0; i < VAL; i++)
    {
      if(array[i] == 2) {
        return 1;
      } 
    }
    return 0;
}

我尝试过一个临时变量,它存储返回值并在结尾返回此变量。但那没用。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您需要存储临时变量以打破循环

int32_t
do_test(int32_t array[])
{
    int32_t result = 0;  
    for(int32_t i=0; i < VAL; i++)
    {
      if(array[i] == 2) {
        result = 1;
        break; // !!
      } 
    }
    return result;
}