Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
else statement about Rule2.1
#1
I have a question about Rule2.1.

Are these samples correct?
The else statement is null statement or not.

sample_1
if ( a= 5 ) {
y=3;
}else{
y=0; /* not compliant */
}

sample_2
if ( a= 5 ) {
y=3;
}else{
; /* compliant */
}

I think if the else statement is null statement the code is reachable.
Is is correct?

And how about is default label?

In case all case is coded,if default label has null statement , the code is reachable.
Is it correct?

Please teach me.

Regards
<t></t>
#2
Thank you for your query. We will reply after our next working group meeting which is on the 3rd December.
Posted by and on behalf of the MISRA C Working Group
#3
The following response assumes that "a" is not volatile.

A statement with no executable code is not considered to be unreachable. This includes null statements and empty compound statements. The same applies to a default statement which contains no executable code.

The "else { ; } " is therefore not considered as unreachable code and is compliant with this rule.

The "else { y = 0; }" is unreachable as the statement contains code that would be executed if that control flow path had been reached.

However the above code does violate rule 14.3, since the condition "a >= 5" is an invariant as it will always evaluate to true due to the previous condition "a < 5 ".
Posted by and on behalf of the MISRA C Working Group


Forum Jump:


Users browsing this thread: 2 Guest(s)