Arrays 原因:错误:数组下标高于数组边界

Arrays 原因:错误:数组下标高于数组边界,arrays,gcc,gcc-warning,Arrays,Gcc,Gcc Warning,我已经查看了stack overflow中的其他条目,但是它们合法地“高于”边界 在我的代码中,我在一系列嵌套的结构中迂回前进: static inline void * get_resp_ptr(U32 blade_ix, U32 q_id) { per_blade_data * bd = bfr_blade_data + blade_ix; bfr_pendcmd_q_t * pcq = bd->bfrpb_ques + q_id; response_t *

我已经查看了stack overflow中的其他条目,但是它们合法地“高于”边界

在我的代码中,我在一系列嵌套的结构中迂回前进:

static inline void * get_resp_ptr(U32 blade_ix, U32 q_id)
{
    per_blade_data *  bd  = bfr_blade_data + blade_ix;
    bfr_pendcmd_q_t * pcq = bd->bfrpb_ques + q_id;
    response_t *      res = pcq->bfrpq_resp;
    return (void *)(res + pcq->bfrpq_resp_rdix);
}
“bfrpq_resp”是指向类型响应的指针。此函数的最后两行都会得到错误消息。把我吓坏了……你猜编译器想说什么?我很想加入UINTPTRU,只使用算术:(


编辑:这不起作用。将pcq->bfrpq_resp分配给uintptr___________________________________________________________________。GCC指向那一行,但问题是前一行是由手指绊倒引起的。谢谢。我不会提交GCC错误,因为4.3.3有点长。

可以想象。我有点怀疑,因为我没有在那一行上索引bfrpq_resp。直到返回语句。然后,我再次使用:mips64 octeon linux gnu GCC(Cavium Inc.版本:2_3_0 build 116)4.3.3,可能对该bug来说太旧了;)。另一种可能是对bfrpb_ques+q_id的一些混淆。这是一个由9个元素组成的数组,其中q_id始终作为常量0到8传递。我将运行下去。。。。。