更改 return 中的函数

Change return of function in c

所以我有一个函数 1 returns 0 或 1。

我有一个 function2,它接收 function1 作为参数。现在,在某些情况下我想在 function2 中正常使用 function1,所以我只调用 function2(function1);

在其他情况下,我想在函数 2 中使用 function1,但我希望 function2 在 returns 0 时从 function1 接收 1,在 returns 1 时从 function1 接收 0。

也就是说,如果函数1returns0,函数2得到1。如果函数1returns1,函数2得到0。

我尝试使用 XOR(function2(function1 ^1);) 调用,但这似乎不起作用。

有什么想法吗?

PS:我知道这听起来可能令人困惑,对此我深表歉意。

编辑:
对不起大家,忘了说 function2 接收指向函数的指针,而不仅仅是 function1 的结果。

您可能想将一个参数传递给 function2 以告诉它如何解释 function1 的 return 值。

假设你的函数定义如下:

int function1(void);
void function2(int (*func)(void), int normalReturn);

然后在function2里面,你可以这样做:

int result;
if (normalReturn) {
    result = func();
} else {
    result = !func();
}

然后您可以像正常使用一样调用function2

function2(function1, 0);

像这样倒转使用:

function2(function1, 1);

正如 Karoly Horvath 在评论中提到的,您可以创建一个 "wrapper" 函数来调用 function1 并反转其 return 值。这避免了修改 function2:

的需要
int function1_neg(void)
{
    return function1() ^ 1;
}

...

function2(function1_neg);