Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V2642. MISRA. The '_Atomic'...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V2642. MISRA. The '_Atomic' specifier should not be applied to the incomplete type 'void'.

04 Апр 2025

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

Это правило актуально только для языка C.

Использование указателя на атомарный неполный тип (_Atomic void *) может привести к неожиданным результатам, и потому должно избегаться.

В языке C тип void * можно преобразовать к любому типу T * (C11, п. 6.3.2.3.1), однако стандарт не налагает никаких требований к размеру и выравниванию на указатель _Atomic void * (C11, п. 6.2.5.28). Вследствие этого, преобразование между указателем на атомарный неполный тип (_Atomic void *) и указателем на произвольный атомарный тип (_Atomic T *) может привести к неопределённому поведению.

Пример кода, на котором анализатор сгенерирует предупреждения:

int _Atomic a;

void main (void)
{
  a = 5;
  void _Atomic * avp1 = &a; 
  _Atomic(void)* avp2 = &a; 
}

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

  • MISRA-C-11.10