Rule 15.4 - no boolean switch expressions

6.15 Switch Statements

Moderators: misra-c, david ward

eddieh
Posts: 1
Joined: Fri Apr 08, 2011 1:32 pm
Company: Triteq Limited

Rule 15.4 - no boolean switch expressions

Postby eddieh » Fri Apr 08, 2011 2:02 pm

I don't believe my compiler's interpretation of rule 15.4 is consistent with the Standard's...

The Standard says:

Code: Select all

switch( x == 0 )
{
    ...


is non-compliant, which seems reasonable. However, my compiler complains about:

Code: Select all

enum_type x;

switch( x )
{
    case ENUM_A :
        do_stuff;
        break;
    default :
        /* No action */
        break;
}


Because 'x' is an enumerated type, I like to make it clear that we do_stuff for a particular subset of possible values.

What is intended interpretation of this rule? There is no explanation in the Standard.

Many thanks in advance for any comments.

Cheers,
Eddie.

misra-c
Posts: 540
Joined: Thu Jan 05, 2006 1:11 pm

Re: Rule 15.4 - no boolean switch expressions

Postby misra-c » Mon Apr 11, 2011 9:52 am

Rule 15.4 relates to the effective type of the controlling expression of the switch statement. The intent is to identify a switch statement that can have only two possible cases. Such switch statements are unusual and may be indicative of a programming error. The same effect could be achieved more clearly using if ... else.

Since an enumerated type is not effectively Boolean, there is no violation of Rule 15.4 in this case.

The body of the switch statement contains at least one case clause so there is no violation of Rule 15.5 either.
---
Posted by and on behalf of
the MISRA C Working Group


Return to “6.15 Switch Statements”

Who is online

Users browsing this forum: No registered users and 0 guests