c - MISRA 2004 要求规则 10.1,禁止隐式转换 : Non-constant argument to function

标签 c misra

我正在更改我的代码以满足 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 不允许在几种情况下进行隐式转换,包括“表达式不是常量并且是函数参数”,这是您遇到的情况。

关于c - MISRA 2004 要求规则 10.1,禁止隐式转换 : Non-constant argument to function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33429072/

相关文章:

c - 将结构数组保存到共享内存

c - 如何正确使用fread()读取指定长度的内容(C语言)

c - 我是否需要将 ascii 转换为 uint8_t 以通过 uart(腻子)写入和显示

c - 如何在 C 中编写从 a 到 z 和 A 到 Z 运行的单个 for 循环?

c - MISRA C 规则 12.2

c - c Linux 中 system() 的替代方案,用于在 Linux 上执行终端命令

c - 语言 c - 用逗号获取几个单词

c++ - 如何指定符合 MISRA C++ 的字 rune 字?

c++ - 枚举和二元或运算符 (MISRA C++ 2008, 4-5-2)

c - 运算符 '++' 的未经允许的操作数 [MISRA 2012 规则 10.1,必需]