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

0

Я получаю предупреждение: управление достигает конца не-void функции.

У меня есть рекурсивная функция, которая выглядит так:

unsigned long FUNCTION (....) {

    if (something) {
        return 1;
    }
    else if (something2) {

        if(thing) {
            FUNCTION(....);
        }
        else
            return 0;
    }
    else {
        return 0;
    }
}

Я не могу просто поставить return 0; в конце функции, потому что она заканчивается тем, что моя программа делает то, чего я не хочу. Как я могу предупредить предупреждение?

  • 8
    должно быть return FUNCTION(....); в вашем теле функции
Теги:
function
recursion
return
warnings

1 ответ

3

Филиал, вызывающий FUNCTION(...) ничего не возвращает. В результате, если эта ветка взята, ваша функция имеет неопределенное поведение. То, что нужно вернуть, не может быть определено из вашего кода: вам придется придумать это.

Обратите внимание, что FUNCTION обычно указывает, что имя является макросом: существует несколько соглашений, как называются имена, чтобы избежать путаницы. Вы можете вызывать свои функции со всеми заглавными буквами, но это может быть не очень хорошая идея.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню