In C and C++, enumeration types map to integers. The normal expectation is that each enumeration type member is distinct.
However, if required, members can be assigned explicit values, as in:
enum {red=4, orange, yellow, green, blue, indigo=6, violet};
|
It may not be obvious to the programmer (though it is fully specified in the language) that yellow and indigo have been declared to be identical values (6), as are green and violet (7).
Enumeration type declarations must either
enum {red, orange, yellow, green, blue, indigo, violet};
|
enum {red=4, orange, yellow, green, blue, indigo, violet};
|
enum {red=1, orange=2, yellow=3, green=4, blue=5, indigo=6, violet=7};
|
Rule |
Severity |
Likelihood |
Remediation Cost |
Priority |
Level |
|---|---|---|---|---|---|
INT09-A |
1 (low) |
1 (unlikely) |
3 (low) |
P3 |
L3 |
\[[ISO/IEC 9899-1999|AA. C References#ISO/IEC 9899-1999]] Section 6.7.2.2, "Enumeration specifiers" \[[MISRA 04|AA. C References#MISRA 04]]] Rule 9.3 |