uint8 config;    
#define ELEM1 1U

void test1(void)
{
    /*Check Bit 0 of Configuration*/
    if((config) == 2 && (config) == 4)
    {
        arr[ELEM1].status[0]          = 0x00;
    }

}

do I need to try with

1)

if(((config) == 2) && ((config) == 4))
if((Boolean)((config) == 2) && ((config) == 4))

after above change, I am observing error now:

Conditional expression should have essentially Boolean type [MISRA 2012 Rule 14.4, required]

1

There are 1 answers

0
Lundin On BEST ANSWER

First of all, config can't realistically have the value 2 and 4 at once, now can it? So you probably meant to use ||. Or bitwise & perhaps?

As for the warning, if you mix several operators in the same expression, MISRA-C requires that you add parenthesis around sub expressions. The MISRA compliant code would be:

if( (config==2) || (config==4) )

The result of && || etc operators is essentially boolean, so there is no need to cast.