exponenta event banner

MISRA C:2012 Правило 5.6

Имя typedef должно быть уникальным идентификатором

Описание

Эта проверка деактивируется в анализе Polyspace ® по умолчанию в качестве кода. См. раздел Шашки, деактивированные в Polyspace как анализ кода по умолчанию (Polyspace Bug Finder Access).

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

Имя typedef должно быть уникальным идентификатором.

Объяснение

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

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

XX конфликтует с именем typedef YY.

Поиск неисправностей

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

Примеры

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

void func ( void ){
  {
    typedef unsigned char u8_t;
  }
  {
    typedef unsigned char u8_t; /* Non-compliant */
  }
}

typedef float mass;
void func1 ( void ){
  float mass = 0.0f;            /* Non-compliant */
}

В этом примере typedef имя u8_t используется дважды. typedef имя mass также используется в качестве имени идентификатора.

typedef struct list{          /* Compliant - exception */				
  struct list *next;
  unsigned short element;
} list;												

typedef struct{
  struct chain{               /* Non-compliant */	
    struct chain *list2;
    unsigned short element;
  } s1;
  unsigned short length;
} chain;

В этом примере typedef имя list совпадает с исходным именем struct тип. Правило допускает этот исключительный случай.

Тем не менее, typedef имя chain не совпадает с исходным именем struct тип. Имя chain связан с другим struct тип. Поэтому он конфликтует с typedef имя.

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

Группа: идентификаторы
Категория: Обязательно
Категория СМЖЛ: требуется
Представлен в R2014b