如何修复 MISRA 警告:MISRA 18.4 (C90-2012 adv.)
How to fix MISRA warning: MISRA 18.4 (C90-2012 adv.)
我用过一个API,它在正式争论中捕获了参数的地址。但是我使用了日志并将该地址用于打印目的,因为我收到了 MISRA 警告,如下所示:
MISRA.PTR.ARITH Pointer is used in arithmetic or array index
expression
如何修复此警告?
代码片段(来自评论):
int8u my_api(uint8_t *a1,uint8_t *a2,uint8_t *a3)
{
printf(" DeviceMAC: %02x%02x%02x%02x%02x%02x%02x%02x",
a1[0],a1[1],a1[2],a1[3],a1[4],a1[5],a1[6],a1[7] );
return 0;
}
MISRA 区分了 pointer 和 array 类型的参数。如果你想使用数组索引,你的函数头应该看起来像
int8u my_api(uint8_t a1[], uint8_t a2[], uint8_t a3[])
我用过一个API,它在正式争论中捕获了参数的地址。但是我使用了日志并将该地址用于打印目的,因为我收到了 MISRA 警告,如下所示:
MISRA.PTR.ARITH Pointer is used in arithmetic or array index expression
如何修复此警告?
代码片段(来自评论):
int8u my_api(uint8_t *a1,uint8_t *a2,uint8_t *a3)
{
printf(" DeviceMAC: %02x%02x%02x%02x%02x%02x%02x%02x",
a1[0],a1[1],a1[2],a1[3],a1[4],a1[5],a1[6],a1[7] );
return 0;
}
MISRA 区分了 pointer 和 array 类型的参数。如果你想使用数组索引,你的函数头应该看起来像
int8u my_api(uint8_t a1[], uint8_t a2[], uint8_t a3[])