区分C中的返回值和错误

时间:2019-10-14 10:27:48

标签: c pointers posix

我正在尝试编写一个函数,该函数需要一个链表,一个索引并在index + 1位置返回值。

int getData(list *l, int index) {
    if(...) { 
        ...
        return result; // this could be -1
    }

    else {
        return -1;
    }
}

在C中,当函数失败时,您将返回值-1(作为让用户知道由于输入错误而导致调用失败的一种方式)。但是,由于此函数的返回类型为int,因此它包含值-1(数字为-1,以及-2,-3等)

我的问题是:是否有一种机制可以让您从函数中返回并使函数用户知道返回的值实际上是错误而不是值?

1 个答案:

答案 0 :(得分:4)

通过传递指针来返回值,并使返回值成为错误语句:

int getData(list *l, int inIndex, int* outIndex) {
    if(...) { 
        ...
        *outIndex = result;
        return 0;
    }

    else {
        return -1;
    }
}