【发布时间】:2015-10-21 23:54:14
【问题描述】:
我有以下几点:
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] 表达式的值不应分配给具有较窄基本类型或不同基本类型类别的对象
我试图弄清楚为什么会发生这种情况,但我只能看到它。在类似情况下,构建结果也受到此错误的困扰,我不知道为什么。
有人知道发生了什么吗?
编辑:我还尝试显式转换每个值,但仍然得到相同的错误:
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},
};
【问题讨论】:
-
我在这里没有看到任何问题......当然不是 R10.3。错误是针对哪一行?
-
请使用下面评论中引用的类型转换显示您的代码版本,“我也尝试转换每个值,但仍然遇到相同的错误。”
-
@Andrew:错误出现在左大括号处,即“=”之后的那个
-
@m4l490n 我注意到您的最新编辑,当您知道它没有意义并且使代码过于冗长实际上不合规时,花时间使工具静音;-)
标签: c misra array-initialization