MCP2517FD API: доступ к элементу массива вне границ? - PullRequest
0 голосов
/ 20 мая 2019

Я наткнулся на следующую строку кода, соответствующую API-интерфейсу MCP2517FD, разработанному Microchip и используемому в качестве контроллера для сети 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, которая должна получить доступ к элементу массива вне границ!Код компилируется без проблем, но это должно иметь неопределенное поведение.Я пытаюсь понять, является ли это ошибкой (и если да, то, что разработчики действительно пытались сделать), или это сделано намеренно с какой-то целью, которую я не понимаю.

Я уточняю вашупомощь и спасибо.

...