gpt4 book ai didi

gcc - 数组下标高于数组边界 [-Warray-bounds]

转载 作者:行者123 更新时间:2023-12-05 05:28:05 24 4
gpt4 key购买 nike

我环顾四周,没有找到任何可以帮助我的东西……我正在构建一个内核并得到了一些,数组下标超出了数组边界,警告导致构建失败。我正在使用 Linaro 工具链并设置为 -O3,因此任何警告都会导致构建失败...感谢所有帮助

    drivers/media/video/msm/rawchip/Yushan_API.c: In function 'Yushan_Check_Pad_For_IntrID':
drivers/media/video/msm/rawchip/Yushan_API.c:1751:85: warning: array subscript is above array bounds [-Warray-bounds]
error, forbidden warning: Yushan_API.c:1751

这是它失败的方法...

bool_t  Yushan_Check_Pad_For_IntrID(uint8_t bInterruptId)
{

uint8_t bFirstIndexForSet[] = {1, 5, 11, 17, 23, 27, 58, 62, 69, 77, 79, 82, 83};
uint8_t bIntrSetID = 0;
uint16_t uwIntrSetsDivertedToPad1 = 0;

VERBOSELOG("[CAM] %s: Start\n", __func__);
/* Read the list of the interrupt sets diverted to Pad1 */
SPI_Read(YUSHAN_IOR_NVM_SEND_ITR_PAD1 , 2, (uint8_t *)&uwIntrSetsDivertedToPad1);

/* Trace through InterruptSets */
while(bIntrSetID < TOTAL_INTERRUPT_SETS)
{

if( (bInterruptId>=bFirstIndexForSet[bIntrSetID])&&(bInterruptId<bFirstIndexForSet[bIntrSetID+1]) )
{
if((uwIntrSetsDivertedToPad1>>bIntrSetID)&0x01) {
VERBOSELOG("[CAM] %s: End\n", __func__);
return INTERRUPT_PAD_1;
} else {
VERBOSELOG("[CAM] %s: End\n", __func__);
return INTERRUPT_PAD_0;
}
} else
bIntrSetID++;

}

/* Just to remove warning */
VERBOSELOG("[CAM] %s: End\n", __func__);
return INTERRUPT_PAD_0;

}

在线报错:

if( (bInterruptId>=bFirstIndexForSet[bIntrSetID])&&(bInterruptId < bFirstIndexForSet[bIntrSetID+1]) )

最佳答案

索引在这次调用中超出了数组的大小:

bFirstIndexForSet[bIntrSetID+1]

bFirstIndexForSet 有 13 个元素,需要从 0 到 12 的索引。

您正在为低于 TOTAL_INTERRUPT_SETS 的每个索引循环,这应该超过 12。(因为 11+1 是您的数组可以使用的最大索引。)

答案:验证 TOTAL_INTERRUPT_SETS 是否小于或等于 12。

关于gcc - 数组下标高于数组边界 [-Warray-bounds],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14386172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com