【发布时间】:2015-07-30 16:50:56
【问题描述】:
我有以下几点:
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 想让我在所有代码中进行强制转换,这太过分了。
你知道这是为什么吗?我不认为这应该是一个问题,但我已经尝试了所有想到的方法,这是摆脱这个错误的唯一方法,但它根本没有任何意义,不是吗?
问候。
【问题讨论】:
-
正如@Veriloud 建议的那样,这似乎是工具错误,而不是代码违规
标签: casting enums compiler-errors misra