...
However, if required, members can be assigned explicit values, as in:
| Code Block | ||
|---|---|---|
| ||
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).
Compliant Solution
Enumeration type declarations must either
- provide no explicit integer assignments, for example:
| Code Block | ||
|---|---|---|
| ||
enum {red, orange, yellow, green, blue, indigo, violet};
|
- assign a value to the first member only (the rest are then sequential), for example:
| Code Block | ||
|---|---|---|
| ||
enum {red=4, orange, yellow, green, blue, indigo, violet};
|
- assign a value to all members, so any equivalence is explicit, for example:
| Code Block | ||
|---|---|---|
| ||
enum {red=4, orange=5, yellow=1, green=5, blue=2, indigo=3, violet=7};
|
...
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
|---|---|---|---|---|---|
INT33 INT09-C A | 1 (low) | 1 (unlikely) | 3 (low) | P3 | L3 |
...
- ISO/IEC 9899-1999 Section 6.7.2.2, "Enumeration specifiers"
- MISRA 04 Rule 9.3