![]() |
Rule 19.4 Does "#define XY -1" violate 19.4 - 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.19 Preprocessing Directives (https://forum.misra.org.uk/forumdisplay.php?fid=43) +---- Thread: Rule 19.4 Does "#define XY -1" violate 19.4 (/showthread.php?tid=1232) |
Rule 19.4 Does "#define XY -1" violate 19.4 - fst@bm - 17-03-2016 Dear MISRA Team, as I found out, 2 out of 3 commercial MISRA checking tools report the statement "#define XY -1" to be a violation of rule 19.4. I am not sure whether or not this #define actually violates rule 19.4 but if so I would not fully understand the risk associated with this particular #define statement. Could someone please help and discuss if this is a violation and why it should be avoided? Thank your for your support! Re: Rule 19.4 Does "#define XY -1" violate 19.4 - SimonB - 18-03-2016 I'm not surprised it's rejected. "-1" isn't an integer literal, it's the unary minus operator applied to a literal. This means that it's an expression and should be parenthesised. I can't think of any cases where using it gives a surprisingly wrong answer, but it does allow things to compile that look wrong, such as:- Code: int b = 3 XY; Simon Re: Rule 19.4 Does "#define XY -1" violate 19.4 - misra-c - 08-04-2016 The MISRA working group agree with the above response. |