MISRA-C规则11.2:从数组到指针的转换

时间:2019-05-31 18:27:09

标签: c casting misra

我有两个结构:

OnNewDocument

和带有签名的功能

typedef struct {
    uint8 valid;
    uint8 identifier[20];
    uint8 parentIdentifier[20];
    /* etc */
} CustomData;

#define max_data_size 10
typedef struct {
    CustomData data[max_data_size];
    uint32 numberOfUsedData;
    /* etc. */
} MyContext;

我尝试如下调用我的函数:

uint8 parentInList(CustomData *data, 
                   const CustomData* const list,
                   uint32 length);

我的静态分析表明MyContext ctx = /* some proper initialization */; result = parentInList(&ctx.data[0], ctx.data, ctx.numberOfUsedData); 是MisraC的强制转换规则11.2:
“不得在指向 不完整的类型和其他任何类型”

但是我看不到这是不正确的。如果数组具有固定的大小,它不是不完整的类型吗?
这是我的静态分析器是否由于宏而给出了误报?还是我犯了一个错误,该如何解决?

0 个答案:

没有答案