MISRA 2004 要求规则 10.1,禁止隐式转换:函数的非常量参数

MISRA 2004 Required Rule 10.1, Prohibited Implicit Conversion: Non-constant argument to function

我正在更改我的代码以满足 MISRA 标准。我遇到了警告

Required Rule 10.1, Prohibited Implicit Conversion: Non-constant argument to function.

memcpy(&Final_buff[index], Main_cal, buffer_size);
// where buffer_size is uint8, uint8 *Final_buff, and const uint8 *buffer

那我上面改了个小测试:

memcpy(&Final_buff[index], Main_cal, 12u);

已被 MISRA 接受。问题是我不能在那里硬编码值。我怎样才能摆脱这个警告?

这应该可以解决您的 MISRA 问题:

memcpy(&Final_buff[index], Main_cal, (size_t) buffer_size);

规则 10.1 不允许在几种情况下进行隐式转换,包括 "the expression is not constant and is a function argument",这就是您 运行 遇到的情况。