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

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

Описание

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

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

Объяснение

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

Реализация Polyspace

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

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

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

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

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

Уже используется как имя typedef (fileName lineNumber).

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

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

Примеры

расширить все

namespace NS1 {
    typedef int WIDTH;
}

namespace NS2 {
    float WIDTH; //Compliant
}

void f1() {
    typedef int TYPE;
}

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

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

Шашка не помечает редекларацию WIDTH поскольку эти два объявления принадлежат различным пространствам имен.

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

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