exponenta event banner

MISRA C++: 2008 Правило 2-10-3

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

Описание

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

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

Объяснение

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

Внедрение Polyspace

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

Средство поиска ошибок и средство проверки кода проверяют это правило кодирования по-разному. Анализ может дать различные результаты.

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

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

Идентификатор 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