# V2514. MISRA. Unions should not be used.

Данное диагностическое правило основано на руководстве 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-19.2 MISRA-C-2023-19.2 MISRA-CPP-2008-9.5.1