MISRA 2004必需规则10.1,禁止隐式转换:函数的非常数参数

时间:2015-10-30 05:12:04

标签: c misra

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

  

必需规则10.1,禁止隐式转换:函数的非常量参数。

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接受。事情是我不能硬编码那里的价值。我怎样才能摆脱这个警告?

1 个答案:

答案 0 :(得分:4)

这应解决您的MISRA问题:

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

规则10.1在几种情况下不允许隐式转换,包括"表达式不是常量并且是函数参数",这是您遇到的情况。