我有以下内容:
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 想要我在所有代码中进行强制转换,这太过分了。
你知道这是为什么吗?我不认为这应该是一个问题,但我已经尝试了所有想到的东西,这是摆脱这个错误的唯一方法,但它根本没有任何意义,不是吗?
问候。