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

时间:2014-03-12 20:42:57

标签: arrays gcc gcc-warning

我已经查看了堆栈溢出中的其他条目,但它们合法地“超出”了界限。

在我的代码中,我正在通过一系列嵌套结构:

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”是指向response_t类型的指针。此函数的最后两行得到错误消息。打败了我....对编译器试图说什么的任何猜测?我很想投入uintptr_t而只是使用算术。 :(

编辑:这不起作用。将pcq-> bfrpq_resp分配给uintptr_t会导致相同的错误消息。仅仅引用该字段就会产生结果。我认为GCC在这里需要一个不同的错误信息。

2 个答案:

答案 0 :(得分:1)

可能是因为http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45978,如果您的gcc版本低于4.7.0

答案 1 :(得分:0)

我自己编码引发的GCC错误。海湾合作委员会指向那条线,但问题是手指被绊倒造成的前一行。谢谢。我不会提交GCC错误,因为4.3.3有点长了。