Прежде всего, это недопустимо C:
uint8_t data[4] = {0xEFu, 0xCDu, NULL, NULL};
Так как NULL может быть константой нулевого указателя в форме (void*)0
.Замените NULL
на 0
здесь.
Что касается старого требования MISRA-C: 2004 о том, что индексирование массива является единственной разрешенной формой, то это было в основном бессмысленно и исправлено в текущей версии MISRA.-C: 2012.При этом в вашем коде нет необходимости в явной арифметике указателей, так что это правило имеет смысл здесь.
Просто исправьте функцию следующим образом:
static void copy_array(const void* src, void* dest, const uint8_t lenght_bytes)
{
uint8_t i;
const uint8_t* src_8 = src;
uint8_t* dest_8 = dest;
for (i = 0u; i < lenght_bytes; i++)
{
dest_8[i] = src_8[i];
}
}