MISRA 6.1 with enum

6.6 Types

Moderators: misra-c, david ward

Post Reply
ziomocci
Posts: 4
Joined: Tue Jan 14, 2014 4:18 pm
Company: akhela

MISRA 6.1 with enum

Post by ziomocci » Mon May 12, 2014 9:51 am

Hi guys,

I am encountering some problems trying to make MISRA 6.1 compliant my source code,
expecially using enumeration.

From one side, in the header file I declare:
typedef enum { FALLING_EDGE = 0x0, RISING_EDGE } t_EdgePolarity;

and from the other side, in the code I declare:
emios_error_t EMIOS_PIN_Config(t_PIO_CHANNELS _channel,
t_BusSelect _bsl,
t_EdgeSelection _edgesel,
t_EdgePolarity _edgepol,
t_ActiveFilter _filter)
{
... ... ... ... ... ...
/* Do somthing */
switch (_edgepol)
case FALLING_EDGE:
/* Do somthing */
break;
case RISING_EDGE:
/* Do somthing */
break;
default:
/* Do somthing */
break;
... ... ... ... ...
}
At compile time, green hills 5.1.6 compiler gives back this error message:
MISRA 2004 Rule 6.1:
only assignment and equality operators may be used on plain char
operand
switch (_edgepol)
^
It is only an example, but I have same error with all the enumeration used in
the code.

Any suggestions?

Thank you in advance,

Andrea Mocci, embedded SW developer @ Akhela s.r.l.

ziomocci
Posts: 4
Joined: Tue Jan 14, 2014 4:18 pm
Company: akhela

Re: MISRA 6.1 with enum

Post by ziomocci » Thu May 15, 2014 7:17 pm

Resolved using GHS compiler option:

Code: Select all

--no_short_enum
Regards,

Andrea Mocci, embedded SW developer @ Akhela s.r.l.

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

Re: MISRA 6.1 with enum

Post by misra-c » Fri Jun 06, 2014 8:17 am

If the switch control expression is an object of enum type and the switch case expressions are constants of the same enum type, there is no MISRA violation.
---
Posted by and on behalf of
the MISRA C Working Group

Post Reply

Return to “6.6 Types”