У меня есть следующий:Почему я должен использовать элемент перечисления при назначении ему одного и того же типа переменной перечисления в C?
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;
...
}
Иннокентий мм, но при компиляции Мишра C выдает ошибку:
Значение выражения не должно быть отнесено к объекту с более узким эссенциальным типом или другая важное значение категории типа
И я узнал, что я буду писать инициализацию следующим образом:
ProgramStatus = (FLS_JobResult_t)FLS_PROG_SUCCESS;
И это просто не выглядит хорошо для меня, это похоже на то, что MISRA хочет, чтобы я бросал броски во всем коде, и это слишком много.
Вы знаете, почему это так? Я не думаю, что это должно быть проблемой, но я пробовал все, что приходит мне на ум, и это был единственный способ избавиться от этой ошибки, но это просто не имеет никакого смысла, не так ли?
С уважением.
Как @Veriloud предполагает, что это ошибка инструмента, а не нарушение кода – Andrew