У меня есть две структуры:
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);
Мой статический анализ говорит о том, что ctx.data
является правилом нарушения правил 11.2 MisraC:
«Преобразования не должны выполняться между указателем на неполный тип и любым другим типом»
Однако я не могупосмотрим, как это неправильно.Массивы не являются неполным типом, если они имеют фиксированный размер, верно?
Это мой статический анализатор выдает ложное срабатывание из-за макроса?Или я ошибся и как бы исправить?