У меня есть следующее:
typedef enum
{
FLS_PROG_SUCCESS,
FLS_PROG_FAIL,
FLS_ERASE_SUCCESS2U,
FLS_ERASE_FAIL,
FLS_READ_SUCCESS,
FLS_READ_FAIL,
FLS_FORMAT_SUCCESS,
FLS_FORMAT_FAIL
}FLS_JobResult_t;
void Foo(void)
{
FLS_JobResult_t ProgramStatus;
/* Then I try to initialize the variable value */
ProgramStatus = FLS_PROG_SUCCESS;
...
}
Иннокентий, но при компиляции MISRA C выдает ошибку:
Значение выражения не должно присваиваться объекту с более узким основным типом или другой категорией основного типа
И я узнал, что я напишу инициализацию следующим образом:
ProgramStatus = (FLS_JobResult_t)FLS_PROG_SUCCESS;
И это просто не выглядит хорошо для меня, как будто MISRA хочет, чтобы я добавлял приведения во весь код, а это уже слишком.
Вы знаете, почему это? Я не думаю, что это должно быть проблемой, но я пробовал все, что приходит мне в голову, и это был единственный способ избавиться от этой ошибки, но это просто не имеет никакого смысла, не так ли?
С уважением.