Macro replacement lists should be parenthesized to protect any lower-precedence operators from the surrounding expression. See also PRE00-C. Prefer inline or static functions to function-like macros - CERT Secure Coding Standards and PRE01-AC. Use parentheses within macros around parameter names - CERT Secure Coding Standards.
Non-Compliant Code Example
...
Wiki Markup |
---|
\[[ISO/IEC 9899:1999|AA. C References#ISO/IEC 9899-1999]\] Section 6.10, "Preprocessing directives," and Section 5.1.1, "Translation environment" \[[ISO/IEC PDTR 24772|AA. C References#ISO/IEC PDTR 24772]\] "JCW Operator precedence/Order of Evaluation", "NMP Pre-processor Directions" \[[Plum 85|AA. C References#Plum 85]\] Rule 1-1 \[[Summit 05|AA. C References#Summit 05]\] Question 10.1 |
...
PRE01-AC. Use parentheses within macros around parameter names - CERT Secure Coding Standards 01. Preprocessor (PRE) PRE03-C. Prefer typedefs to defines for encoding types