MISRA C:2012 Rule 5.6

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

Описание

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

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

Объяснение

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

Обменивайтесь сообщениями в отчете

XX конфликтов с определением типа называют 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 имя.

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

Группа: Идентификаторы
Категория:
Категория AGC: необходимый
Язык: C90, C99

Введенный в R2014b