exponenta event banner

CERT C: Rec. INT09-C

Убедитесь, что константы перечисления соответствуют уникальным значениям

Описание

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

Убедитесь, что константы перечисления соответствуют уникальным значениям. [1 ]

Внедрение Polyspace

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

Примеры

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

Проблема

Проблема возникает, когда в списке перечислителей значения неявно указанных констант перечисления не уникальны.

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

Риск

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

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

Пример - Репликация значения в неявно указанных константах перечисления
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.

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

Группа: Rec. 04. Целые числа (INT)
Представлен в R2019a

[1] Данное программное обеспечение было создано компанией MathWorks и включает в себя следующие компоненты: «Веб-сайт SEI CERT-C», © 2017 Университет Карнеги-Меллон, веб-сайт SEI CERT-C + + © 2017 Университет Карнеги-Меллон, "Стандарт кодирования SEI CERT C - Правила разработки безопасных, Надежные и безопасные системы - 2016 Edition ", © 2016 Университет Карнеги-Меллон, и "Стандарт кодирования SEI CERT C++ - Правила разработки безопасных, Надежные и безопасные системы в C++ - 2016 Edition "© 2016 Университет Карнеги-Меллон, со специальным разрешением от его Института программного обеспечения.

ЛЮБОЙ МАТЕРИАЛ УНИВЕРСИТЕТА КАРНЕГИ МЕЛЛОНА И/ИЛИ ЕГО ПРОГРАММНОГО ИНЖЕНЕРНОГО ИНСТИТУТА, СОДЕРЖАЩИЙСЯ В НАСТОЯЩЕМ ДОКУМЕНТЕ, ПОСТАВЛЯЕТСЯ КАК ЕСТЬ. УНИВЕРСИТЕТ КАРНЕГИ МЕЛЛОН НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ, ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, В ОТНОШЕНИИ ЛЮБЫХ ВОПРОСОВ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИИ ПРИГОДНОСТИ ДЛЯ ЦЕЛЕЙ ИЛИ ТОВАРНОЙ ПРИГОДНОСТИ, ИСКЛЮЧИТЕЛЬНОСТИ ИЛИ РЕЗУЛЬТАТОВ, ПОЛУЧЕННЫХ ОТ ИСПОЛЬЗОВАНИЯ УНИВЕРСИТЕТ КАРНЕГИ МЕЛЛОН НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ В ОТНОШЕНИИ СВОБОДЫ ОТ ПАТЕНТА, ТОВАРНОГО ЗНАКА ИЛИ НАРУШЕНИЯ АВТОРСКИХ ПРАВ.

Данное программное обеспечение и связанная с ним документация не были рассмотрены и не одобрены Университетом Карнеги-Меллона или его Институтом разработки программного обеспечения.