...
Failing to parenthesize the parameter names in a macro can result in unintended program behavior.
Recommendation | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
PRE01-C | Medium | Probable | Low | P12 | L1 |
Automated Detection
Tool | Version | Checker | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
Astrée |
| macro-parameter-parentheses | Fully checked | ||||||
ECLAIR |
| CC2.PRE01 | Fully implemented | ||||||
Klocwork |
| MISRA.DEFINE.NOPARS |
LDRA tool suite |
| 78 S | Enhanced Enforcement | ||||||
Parasoft C/C++test |
|
|
| MISRA2004-19_10 | Fully implemented | |||||||
PRQA QA-C |
| 3410 | Fully implemented | ||||||
RuleChecker |
| macro-parameter-parentheses | Fully checked | ||||||
PVS-Studio | 6.22 | V733 | General analysis rule |
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Related Guidelines
SEI CERT C++ Coding Standard | VOID PRE01-CPP. Use parentheses within macros around parameter names |
ISO/IEC TR 24772:2013 | Operator Precedence/Order of Evaluation [JCW] Pre-processor Directives [NMP] |
MISRA C:2012 | Rule 20.7 (required) |
Bibliography
...
...