﻿# V2521\. MISRA\. Only the first member of enumerator list should be explicitly initialized, unless all members are explicitly initialized\.

Данное диагностическое правило основано на руководстве [MISRA](https://www.misra.org.uk/) \(Motor Industry Software Reliability Association\) по разработке программного обеспечения\.

Данное диагностическое правило актуально только для C\+\+\. Анализатор обнаружил совмещение явной и неявной инициализации элементов перечисления\. Это может привести к неожиданному дублированию их значений\.

Пример некорректного кода:

```cpp
enum Suits 
{ 
  SUITS_SPADES = 1,
  SUITS_CLUBS,
  SUITS_DIAMONDS,  
  SUITS_HEARTS,
  SUITS_UNKNOWN = 4 
};
```

Подобная инициализация привела к тому, что элементы 'SUITS\_HEARTS' и 'SUITS\_UNKNOWN' имеют одинаковые значения\. Может быть неочевидно, сделано это специально, или код содержит ошибку\. 

Анализатор не будет выдавать предупреждение, если:

* явно инициализируется только первый элемент перечисления;
* все элементы перечисления инициализируются неявно;
* все элементы перечисления инициализируются явно\.