MISRA 让我们的开发人员感到沮丧。
我们收到有关“不要将指针算法应用于指针”和“指针不指向数组”的 MISRA 错误。
我们使用的语法是:
uint8_t const * p_buffer
将缓冲区传递给将缓冲区写入 SPI 总线的函数。
给定一个示例代码片段:
static void Write_Byte_To_SPI_Bus(uint8_t byte);
void Write_Buffer_To_SPI_Bus(uint8_t const * p_buffer,
unsigned int quantity)
{
for (unsigned int i = 0; i < quantity; ++i)
{
Write_Byte_To_SPI_Bus(*p_buffer++);
}
}
有没有办法让一个指针指向数组中的一个单元格并增加它以满足 MISRA 的要求?
我的解释是 MISRA 想要增加数组的索引而不是指针:
void Write_Array_To_SPI_Bus(uint8_t const p_array[],
unsigned int quantity)
{
for (unsigned int i = 0; i < quantity; ++i)
{
Write_Byte_To_SPI_Bus(p_array[i]);
}
}
许多开发人员都是老派,更喜欢使用指针uint8_t
而不是传递数组。