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

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

Описание

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

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

Объяснение

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

Реализация 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 потому что эти два объявления принадлежат различным пространствам имен.

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

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