Я пытался Splint с программой на C, которую я недавно написал, и пытался понять и удалить предупреждения, которые он дает. Я понимаю, но не могу понять, как его удалить из следующего фрагмента кода:
static MyType_t *findById(const int id)
{
int i;
for (i = 0; i < MY_ARR_SIZE; i++) {
if (my_arr[i].id == NOT_SET) {
/* Items are sorted so that items with
NOT_SET as ID are at the end of the array */
break;
}
if (my_arr[i].id == id) {
return &(my_arr[i]);
}
}
return NULL;
}
Splint не рад, что функция может возвращать NULL, но в этом случае это имеет смысл.
Я пытался использовать / @ nullwhenfalse @ /, но, похоже, он работает, только если функция возвращает true / false, а также пытался изменить код для использования retVal и пробовал оба / @ null @ / и / @ relnull @ / перед декларацией, но они ничего не сделали.
(Как примечание, в таблице только 20 больших атм, поэтому нет смысла использовать умный алгоритм поиска.)