MISRA C:2012 Rule 5.6

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

Описание

Эта проверка деактивирована в Polyspace по умолчанию® по мере анализа You Code. Смотрите Checkers Deactivated in Polyspace как You Code Default Analysis (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 используется дважды. The 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 имя.

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

Группа: Идентификаторы
Категория: Требуемая
Категория AGC: Требуется
Введенный в R2014b