C and C++


LANG.ID.NU.MK : Macro Name is C Keyword

Summary

A preprocessor macro is defined with a name that (exactly) matched a C keyword.

Properties

Class Name Macro Name is C Keyword
Significance style
Mnemonic LANG.ID.NU.MK
Categories
MisraC2023 MisraC2023:20.4 A macro shall not be defined with the same name as a keyword
Misra2012 Misra2012:20.4 A macro shall not be defined with the same name as a keyword
Misra2004 Misra2004:19.4 C macros shall only expand to a braced initialiser, a constant, a string literal, a parenthesised expression, a type qualifier, a storage class specifier, or a do-whilezero construct
CWE CWE:710 Improper Adherence to Coding Standards
CERT-CPP CERT-CPP:DCL51-CPP Do not declare or define a reserved identifier
POW10 POW10:8 Limit the use of the preprocessor to file inclusion and simple macros.
JPL JPL:20 Make only very limited use of the C pre-processor.
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default, and require the unnormalized C ASTs for the project. To enable them, add the following WARNING_FILTER rule and RETAIN_UNNORMALIZED_C_AST specification to the project configuration file.
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Macro Name is C Keyword"
Note that retaining the unnormalized ASTs will increase the disk space used to store the project representation, and may make the analysis take longer.

Example

#define for 1  /* 'Macro Name is C Keyword' warning issued here */       

#define FOR 1                           /* not an exact match to keyword 'for' */

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.