2017-11-23 13 views
0

제 코드에서 15.5 규칙을 제거하려고합니다. 이는 기본적으로 함수에서 여러 개의 리턴이 있기 때문입니다. 내가 반환 값과 끝이 변수를 반환을 저장할 임시 변수로 시도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; 
} 

: 같은

코드 보인다. 그러나 그 didnt 일.

제안 사항?

+1

에게 휴식을 변수 임시을 저장해야합니다. 그게 효과가 있기 때문이죠. 당신이 잘못하지 않으면. – immibis

+0

실패한 임시 변수 시도를 표시 할 수 있습니까? – jwodder

+0

int32_t do_test (const int8_t 배열 []) { int32_t 임시; (array [i] == 2) { temp = 1;if (array [i] == 2) (int32_t i = 0; i Salim

답변

1

당신은 루프 당신은 반환 값을 저장하는 임시 변수를 사용하고 마지막에이 변수를 반환해야

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; 
} 
+0

네. 잘 작동합니다. 감사 !!! – Salim