предупреждение: управление достигает конца не пустой функции (c ++)

я получаю эту ошибку и не могу исправить, я нуб, если кто-то может мне помочь, я буду вам благодарен
этот код взят из xmplayer из libxenon (для jtag xbox)

(я пытаюсь найти похожую ошибку, но я не могу найти, что не так)

  int FileSortCallback(const void *f1, const void *f2) {
/* Special case for implicit directories */
if (((BROWSERENTRY *) f1)->filename[0] == '.' || ((BROWSERENTRY *) f2)->filename[0] == '.') {
if (strcmp(((BROWSERENTRY *) f1)->filename, ".") == 0) {
return -1;
}
if (strcmp(((BROWSERENTRY *) f2)->filename, ".") == 0) {
return 1;
}
if (strcmp(((BROWSERENTRY *) f1)->filename, "..") == 0) {
return -1;
}
if (strcmp(((BROWSERENTRY *) f2)->filename, "..") == 0) {
return 1;
}
}

/* If one is a file and one is a directory the directory is first. */
if (((BROWSERENTRY *) f1)->isdir && !(((BROWSERENTRY *) f2)->isdir)) return -1;
if (!(((BROWSERENTRY *) f1)->isdir) && ((BROWSERENTRY *) f2)->isdir) return 1;

//Ascending Name
if (XMPlayerCfg.sort_order == 0) {
return stricmp(((BROWSERENTRY *) f1)->filename, ((BROWSERENTRY *) f2)->filename);
}
//Descending Name
else if (XMPlayerCfg.sort_order == 1) {
return stricmp(((BROWSERENTRY *) f2)->filename, ((BROWSERENTRY *) f1)->filename);
}
//Date Ascending
else if (XMPlayerCfg.sort_order == 2) {
if ( ((BROWSERENTRY *) f2)->date == ((BROWSERENTRY *) f1)->date) { //if date is the same order by filename
return stricmp(((BROWSERENTRY *) f2)->filename, ((BROWSERENTRY *) f1)->filename);
} else {
return ((BROWSERENTRY *) f1)->date - ((BROWSERENTRY *) f2)->date;
}
}
//Date Descending
else if (XMPlayerCfg.sort_order == 3) {
if ( ((BROWSERENTRY *) f2)->date == ((BROWSERENTRY *) f1)->date) { //if date is the same order by filename
return stricmp(((BROWSERENTRY *) f1)->filename, ((BROWSERENTRY *) f2)->filename);
} else {
return ((BROWSERENTRY *) f2)->date - ((BROWSERENTRY *) f1)->date;
}
}
}

2

Решение

Компилятор анализирует ваш код и видит, что оператор return будет выполнен для всех значений sort_order между 0 а также 5включительно. Однако если sort_order отрицательно или больше чем 5код достигнет конца функции без оператора return; именно поэтому компилятор выдает предупреждение.

Обратите внимание, что это может быть невозможно для sort_order быть установленным на отрицательное число или число свыше 5 из-за ограничений в других частях вашего кода. Тем не менее, компилятор не знает ничего об этом, поэтому он считает, что sort_order может иметь любое значение.

Чтобы решить эту проблему, добавьте безусловный оператор возврата в конце.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]