警告 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.
}
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應