相关疑难解决方法(0)

结构数组初始化中的MISRA-C错误

我有以下内容:

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},
};
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很好,但是,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},
};
Run Code Online (Sandbox Code Playgroud)

c misra array-initialization

7
推荐指数
2
解决办法
1617
查看次数

标签 统计

array-initialization ×1

c ×1

misra ×1