 
                            ...
Improper use of macros may result in undefined behavior.
| Recommendation | Severity | Likelihood | 
|---|
| Detectable | Repairable | Priority | Level | 
|---|---|---|---|
| PRE00-C | Medium | Unlikely | 
| No | No | 
| P2 | L3 | 
Automated Detection
| Tool | Version | Checker | Description | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Astrée | 
 | macro-function-like | Fully checked | ||||||
| Axivion Bauhaus Suite | 
 | CertC-PRE00 | |||||||
| CodeSonar | 
 | LANG.PREPROC.FUNCMACRO | Function-Like Macro | ||||||
| Cppcheck Premium | 
 | premium-cert-pre00-c | |||||||
| 
 | CC2.PRE00 | Fully implemented | |||||||
| Helix QAC | 
 | C3453 | |||||||
| Klocwork | 
 | MISRA.DEFINE.FUNC | |||||||
| LDRA tool suite | 
 | 340 S | Enhanced enforcement | ||||||
| Parasoft C/C++test | 
| 
 | CERT_C-PRE00-a | A function should be used in preference to a function-like macro | |||||||
| PC-lint Plus | 
 | 9026 | Assistance provided | ||||||
| Polyspace Bug Finder | 
 | CERT C: Rec. PRE00-C | Checks for use of function-like macro instead of function (rec. fully covered) | ||||||
| RuleChecker | 
 | macro-function-like macro-function-like-strict function-like-macro-expansion | Fully checked | ||||||
| SonarQube C/C++ Plugin | 
 | S960 | 
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Related Guidelines
| SEI CERT C++ Coding Standard | VOID PRE00-CPP. Avoid defining macros | 
| ISO/IEC TR 24772:2013 | Pre-processor Directives [NMP] | 
| MISRA C:2012 | Directive 4.9 (advisory) | 
Bibliography
| [Dewhurst 2002] | Gotcha #26, " #definePseudofunctions" | 
| [FSF 2005] | Section 5.34, "An Inline Function Is as Fast as a Macro" | 
| [Kettlewell 2003] | 
| [Summit 2005] | Question 10.4 | 
...
...