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

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

Описание

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

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

Объяснение

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

Реализация Polyspace

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

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

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

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

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

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

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

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

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

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