MISRA C:2012 Rule 21.15
The pointer arguments to the Standard Library functions memcpy, memmove and memcmp shall be pointers to qualified or unqualified versions of compatible types
描述
规则定义
The pointer arguments to the Standard Library functions memcpy, memmove and memcmp shall be pointers to qualified or unqualified versions of compatible types. 1
此规则来自 MISRA C™:2012 Amendment 1。
理由
函数
memcpy( arg1, arg2, num_bytes ); memmove( arg1, arg2, num_bytes ); memcmp( arg1, arg2, num_bytes );
arg1 和 arg2 所指向的内存位置之间逐字节地进行复制、移动或比较操作。只有当 arg1 和 arg2 具有兼容的类型时,逐字节复制、移动或比较才有意义。为 arg1 和 arg2 使用指向不同数据类型的指针通常指示存在编码错误。
故障排除
如果您预期会出现违规,但未看到该违规,请参阅诊断为何编码规范违规未按预期显示。
示例
检查信息
| 组:标准库 |
| 类别:必需 |
| AGC 类别:必需 |
版本历史记录
在 R2017a 中推出
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace® Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.