MCP2517FD API:是否访问越界数组元素?

时间:2019-05-20 20:13:26

标签: c arrays undefined-behavior

我偶然发现了与Microchip开发的MCP2517FD API对应的以下代码行,该代码用作CAN-FD网络的控制器:

ciFifoCon.word = canControlResetValues[cREGADDR_CiFIFOCON / 4];
#This line is used several times on the code.

其中 ciFifoCon 是一个32位结构,具有一个字字段和几个位,而 canControlResetValues 是以下数组:

static uint32_t canControlResetValues[] = {
    /* Address 0x000 to 0x00C */
    0x04980760, 0x003E0F0F, 0x000E0303, 0x00021000,
    /* Address 0x010 to 0x01C */
    0x00000000, 0x00000000, 0x40400040, 0x00000000,
    /* Address 0x020 to 0x02C */
    0x00000000, 0x00000000, 0x00000000, 0x00000000,
    /* Address 0x030 to 0x03C */
    0x00000000, 0x00200000, 0x00000000, 0x00000000,
    /* Address 0x040 to 0x04C */
    0x00000400, 0x00000000, 0x00000000, 0x00000000
};

并且_cREGADDR_CiFIFOCON_已定义为广告0x50:

#define cREGADDR_CiFIFOCON  0x050

问题:cREGADDR_CiFIFOCON / 4 = 20,它应该访问超出范围的数组元素!代码编译没有问题,但是应该具有未定义的行为。我正在尝试了解这是否是一个错误(如果是,那是开发人员真正想做的事情),还是有意地出于某种我不理解的目的完成了它。

感谢您的帮助和感谢。

0 个答案:

没有答案