exponenta event banner

MISRA C:2012 Правило 8.12

В списке перечислителей значение неявно указанной константы перечисления должно быть уникальным.

Описание

Определение правила

В списке перечислителей значение неявно указанной константы перечисления должно быть уникальным.

Объяснение

Неявно указанная константа перечисления имеет значение на единицу больше предшествующего значения. Если первая константа перечисления задана неявно, то ее значение равно 0. Явно указанная константа перечисления имеет указанное значение.

Если неявно и явно указанные константы смешиваются в списке перечисления, программа может реплицировать значения. Такие репликации могут быть непреднамеренными и могут вызвать неожиданное поведение.

Внедрение Polyspace

Средство проверки правил помечает перечисление, если оно имеет неявно заданную константу перечисления с тем же значением, что и другая константа перечисления.

Дополнительное сообщение в отчете

Константа constant1 имеет то же значение, что и константа constant2.

Поиск неисправностей

Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.

Примеры

развернуть все

enum color1 {red_1, blue_1, green_1};   /* Compliant */
enum color2 {red_2 = 1, blue_2 = 2, green_2 = 3};       /* Compliant */
enum color3 {red_3 = 1, blue_3, green_3};     /* Compliant */
enum color4 {red_4, blue_4, green_4 = 1};     /* Non Compliant */
enum color5 {red_5 = 2, blue_5, green_5 = 2};     /* Compliant */
enum color6 {red_6 = 2, blue_6, green_6 = 2, yellow_6};     /* Non Compliant */

Соответствующие ситуации:

  • color1: Все константы задаются неявно.

  • color2: Все константы указаны явно.

  • color3Хотя существует сочетание неявной и явной спецификации, все константы имеют уникальные значения.

  • color5: неявно указанные константы имеют уникальные значения.

Несоответствующие ситуации:

  • color4: неявно указанная константа blue_4 имеет то же значение, что и green_4.

  • color6: неявно указанная константа blue_6 имеет то же значение, что и yellow_6.

Проверить информацию

Группа: Объявления и определения
Категория: Обязательно
Категория СМЖЛ: требуется
Представлен в R2014b