я следующее:MISRA-C ошибка инициализации структура массива
typedef struct
{
uint8_t BlockID;
uint32_t Copies;
uint16_t Size;
}NVMM_ConfigType;
const NVMM_ConfigType NvmmCnf_Layout[6] =
{
{ 1, 1, 4},
{ 2, 3, 4},
{ 5, 5, 16},
{ 10, 1, 4},
{ 11, 2, 32},
{ 13, 1, 100},
};
Что выглядит хорошо для меня, но, MISRA-C дает следующее сообщение об ошибке:
MISRA C: 2012 правила Нарушение 10.3: [R] Значение выражения не присваивается объекту с более узким существенным типом или другой категорией существенного типа
Я попытался выяснить, почему это происходит, но я просто могу видеть это. Также результаты сборки страдают от этих ошибок в подобных ситуациях, и я не знаю почему.
Кто-нибудь знает, что происходит?
EDIT: Я также попытался явно привести все значения и по-прежнему получать ту же ошибку:
const NVMM_ConfigType NvmmCnf_Layout[6] =
{
{ (uint8_t)1, (uint32_t)1, (uint16_t)4},
{ (uint8_t)2, (uint32_t)3, (uint16_t)4},
{ (uint8_t)5, (uint32_t)5, (uint16_t)16},
{ (uint8_t)10, (uint32_t)1, (uint16_t)4},
{ (uint8_t)11, (uint32_t)2, (uint16_t)32},
{ (uint8_t)13, (uint32_t)1, (uint16_t)100},
};
Я не вижу здесь никаких проблем ... конечно, не WRT R10.3. Какая строка является ошибкой? – Andrew
Пожалуйста, покажите свою версию кода с типом приведения, указанным в комментарии ниже: «Я также попытался использовать каждое значение, но все равно получаю ту же ошибку». –
@Andrew: Ошибка в открывающей скобке, одна сразу после «=» – m4l490n