MISRA C++:2008 Rule 2-10-3

Имя определения типа (включая проверку, если таковые имеются) должно быть уникальным идентификатором

Описание

Примечание

Используйте Bug Finder вместо Code Prover для проверки правил кодирования. Поддержка кодирования правил, регистрируясь в Code Prover будет удалена в будущем релизе. См. Вопросы совместимости.

Управляйте определением

Имя определения типа (включая проверку, если таковые имеются) должно быть уникальным идентификатором.

Объяснение

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

Реализация Polyspace

Средство проверки не отмечает ситуации, где конфликтные имена происходят в различных пространствах имен.

Bug Finder и Code Prover проверяют это правило кодирования по-другому. Исследования могут привести к различным результатам.

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

Имя определения типа (включая проверку, если таковые имеются) должно быть уникальным идентификатором.

Идентификатор typeName не должен быть снова использован.

Уже используемый в качестве имени определения типа (fileNamelineNumber).

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.

Примеры

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

namespace NS1 {
    typedef int WIDTH;
}

namespace NS2 {
    float WIDTH; //Compliant
}

void f1() {
    typedef int TYPE;
}

void f2() {
    float TYPE; //Noncompliant
}

В этом примере, объявлении TYPE в f2() конфликты с объявлением определения типа в f1().

Средство проверки не отмечает redeclaration WIDTH потому что эти два объявления принадлежат различным пространствам имен.

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

Группа: лексические соглашения
Категория: необходимый

Вопросы совместимости

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

Не рекомендуемый запуск в R2021b

Введенный в R2013b