更改 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);
所以我有一个函数 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);