在为我的项目运行Klocwork时,我收到许多严重性级别4警告,例如:“第178行:循环索引'i'用作第177行的索引,以计算'queue_id',然后将其用作内部的索引第175行为“ for””
代码如下:
for (i = 0; i < nb_rx; i++)
{
queue_id = events[i].queue_id;
event_handler_id = queues_table[queue_id].event_handler;
handler_table[event_handler_id].receive_func(events[i], dev_id, port_id);//call event function to handle this event
}
基本上,我可以看到模式是在for循环中,如果我通过读取使用“ i”索引的数组“ events [i]”得到结果“ queue_id”,那么我将得到另一个结果通过从另一个使用先前结果“ queue_id”建立索引的数组“ queues_table [queue_id]”中读取“ event_handler_id”,那么我会得到此警告。
此警告的Klocwork代码为“ BP.DDL.SP1d”,但我找不到更详细的解释。
但是我保证这种行为(从一个数组读取,然后使用此结果从另一个数组读取)正是我想要做的。对我来说,这听起来像是一个有效的逻辑,所以我不知道为什么Klocwork一直对这样的代码发出警告。
有人知道原因是什么,如何避免收到警告?严重性级别仅为4,所以这不是关键问题,但我仍然想了解原因。
非常感谢。