1.枚举的普通写法
typeof enum{
TypeA_Val1,
TypeA_Val2,
TypeA_Val3
} TypeA;
像这样创建一个枚举, 我们来运用它, 在日常代码中很常见, 而在编写过程中, 经常要用它和数值对换.
比如我设置
TypeA A = (TypeA)intValue;
这样的写法会导致赋值给A一个不存在的类型的情况
2.加上范围保护
TypeA A = (TypeA)MAX(MIN(intValue, TypeA_Val3), TypeA_Val1);
这样就能限定在规定范围内
但是经常维护代码就会发现
typeof enum{
TypeA_Val1,
TypeA_ValC
} TypeA;
枚举经常会根据实际情况删减增添, 会导致判断失效报错, 有个简单的办法来解决它
typeof enum{
TypeA_NONE = -1,
TypeA_Val1,
TypeA_ValC,
TypeA_TOTAL
} TypeA;
添加NONE和TOTAL这两个值
NONE设置为-1, 不影响之后的枚举值
范围保护就变成了
TypeA A = (TypeA)MAX(MIN(intValue, TypeA_TOTAL-1), TypeA_NONE);
这样, 在这之间的枚举值都可以随便删减增添变化了
对于默认值可以设置为NONE, 这也算是对枚举值的一种初始化
TOTAL值还可以用于遍历
for(int i=0;i<TOTAL;i++)
可以遍历所有的枚举值
设置默认值
typeof enum{
TypeA_NONE = -1,
TypeA_Val1,
TypeA_ValC,
TypeA_TOTAL
TypeA_DEFAULT = TypeA_Val1
} TypeA;
TypeA a = TypeA_DEFAULT;
当有默认指向时, 使用默认值来代替具体的枚举, 也是可以灵活的来改变参数, 也节省出一个变量命名