MISRA 6.1 with enum - Printable Version +- MISRA Discussion Forums (https://forum.misra.org.uk) +-- Forum: MISRA C (https://forum.misra.org.uk/forumdisplay.php?fid=4) +--- Forum: MISRA-C: 2004 rules (https://forum.misra.org.uk/forumdisplay.php?fid=17) +---- Forum: 6.6 Types (https://forum.misra.org.uk/forumdisplay.php?fid=33) +---- Thread: MISRA 6.1 with enum (/showthread.php?tid=1055) |
MISRA 6.1 with enum - ziomocci - 12-05-2014 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. Re: MISRA 6.1 with enum - ziomocci - 15-05-2014 Resolved using GHS compiler option: Code: --no_short_enum Regards, Andrea Mocci, embedded SW developer @ Akhela s.r.l. Re: MISRA 6.1 with enum - misra-c - 06-06-2014 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. |