合理初始化各枚举项
5.2.2 ID_casualInitialization
同类枚举项的初始化只应从下列方式中选择一种:
- 全部隐式初始化
- 只显式初始化第一个枚举项
- 全部显式初始化为不同的值
枚举项可以隐式初始化,由编译器分配不同的值,首项为 0,后续各项依次增 1,也可以显式初始化,由 = 和初始化表达式指定某具体值,应合理初始化各枚举项,避免产生冲突。
示例:
enum Color {
red,
blue,
green,
yellow = 2 // Non-compliant
};
例中隐式初始化的 green 和显式初始化的 yellow 具有相同的值,属于常见笔误。
应改为:
enum Color {
red,
blue,
green,
yellow // Compliant
};
相关
参考
MISRA C 2004 9.3
MISRA C++ 2008 8-5-3
SEI CERT INT09-C