MISRA C 11.2违规修复咨询:数组与指针类型转换问题
问题:MISRA C 11.2违规修复方案(数组指针赋值问题)
我在头文件array.h中声明数组,array.c中定义数组,main.c中使用该数组,代码片段如下:
array.h
typedef struct { uint16 Identifier; uint16 Data; } array_struct_type ; extern const array_struct_type myarray[];
array.c
const array_struct_type myarray[] = { {0x01u, 0u}, {0x01u, 0u}, };
main.c
#include "array.h" static array_struct_type * pArray; pArray = myarray;
将数组地址赋值给指针时,触发了MISRA C 11.2违规:不得在指向不完整类型的指针与其他类型之间进行转换。
我尝试了以下两种写法,但问题仍未解决:
pArray = (array_struct_type * )myarray; pArray = &myarray[0];
目前仅通过禁用MISRA编译指令解决该问题,希望找到更合规的修复方案。
内容的提问来源于stack exchange,提问作者Jee
相关产品推荐
相关产品推荐

