警告 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.
}

另请参阅

C26813
C26827