Macro replacement lists should be parenthesized to protect any lower precedence operators from the surrounding expression. See also PRE00-A. Prefer inline or static functions to function-like macros and PRE01-A. Use parentheses within macros around parameter names.
...
which is not the desired behavior. This example also violates PRE00-A. Prefer inline or static functions to function-like macros.
Compliant Solution
...