警告 C26828
不同的枚举类型具有重叠的值。 你想在这里使用另一个枚举常量吗?
备注
大多数情况下,单一枚举类型描述了可用于选项的所有位标志。 如果你在同一个按位表达式中使用两个具有重叠值的不同枚举类型,那么这些枚举类型很可能不是为一起使用而设计的。
代码分析名称:MIXING_OVERLAPPING_ENUMS
示例
以下示例代码会导致警告 C26828:
enum BitWiseA
{
A = 1,
B = 2,
C = 4
};
enum class BitWiseB
{
AA = 1,
BB = 2,
CC = 4,
All = 7
};
int overlappingBitwiseEnums(BitWiseA a)
{
return (int)a|(int)BitWiseB::AA; // Warning C26828: Different enum types have overlapping values. Did you want to use another enum constant here?
}
要修复警告,请确保设计用于一起使用的枚举类型没有重叠值。 或者,确保所有相关选项都在一个枚举类型中。
enum BitWiseA
{
A = 1,
B = 2,
C = 4
};
int overlappingBitwiseEnums(BitWiseA a)
{
return (int)a|(int)BitWiseA::A; // No warning.
}