MISRA Discussion Forums

Full Version: Rule 19.4 Does "#define XY -1" violate 19.4
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
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!
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:-
    int b = 3 XY;

The MISRA working group agree with the above response.