警告:控制在递归函数中到达非void函数的结尾

时间:2013-11-24 11:50:11

标签: c++ function recursion return warnings

我收到警告:控制到达无效功能的结束。

我有一个递归函数,如下所示:

unsigned long FUNCTION (....) {

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

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

我不能把回报0;在功能的最后,因为它最终使我的程序做我不想要的。如何使警告消失?

1 个答案:

答案 0 :(得分:3)

调用FUNCTION(...)的分支不会返回任何内容。因此,如果采用此分支,则您的函数具有未定义的行为。无法从您的代码中确定需要返回的内容:您必须提出这一点。

请注意,FUNCTION通常表示该名称是一个宏:有一些约定如何命名以避免混淆。您可以使用全部大写字母调用您的函数,但这可能不是一个好主意。