Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Можно ли быть тимлидом, но не быть экспертом? Или тренеры не играют - 25.09

menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V2514. MISRA. Unions should not be used.

19 Ноя 2018

Диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.

Анализатор выдаст предупреждение, если обнаружит объявление объединения.

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

Например, в случае C++, неопределённое поведение может возникнуть, когда значение считывается не из члена, в который производилась запись в последний раз.

Пример кода, на который анализатор выдаст предупреждение:

union U
{
  unsigned char uch;
  unsigned int ui;
} uni;
....
uni.uch = 'w';
int ui = uni.ui;

Диагностическое правило классифицируется как:

  • MISRA-C-2012-Rule-19.2
  • MISRA-C-2023-Rule-19.2
  • MISRA-CPP-2008-Rule-9.5.1
  • MISRA-CPP-2023-Rule-12.3.1