gpt4 book ai didi

c - 修改函数指针的签名

转载 作者:太空狗 更新时间:2023-10-29 15:41:21 25 4
gpt4 key购买 nike

我遇到了一个小问题,我得到了这个函数指针:

typedef void* (* funcPointer)(const void *in, int ilen, void *out, int *olen)

还有这个函数

void* foo1(const void *in, int ilen, void *out, int *olen)
{
if(CONST_VALUE_1 > iLen)
//do something
else
//do something else
return whatever;
}

代码中的某处

// ...
funcPointer fpointer = foo1;
if(someArgument > SOME_OTHER_CONSTANT)
// where foo2 is the same as foo1 except that it uses CONST_VALUE_2
fpointer = foo2;
bar( someVariable, anotherVariable, fpointer);
// ...

如您所见,在这个函数体中有一个CONST_VALUE_X。我希望能够删除常量并改用第五个参数。因为我不能修改签名,所以我想知道是否有什么可以做的,或者用每个可能的常量值复制粘贴函数...

谢谢

最佳答案

如果你不能修改函数签名,那么正如你所说,你将没有第五个参数!

我看到三个选项:

  1. 我猜你可以把它塞进其他 void * 参数之一(例如,定义一个包含 in 的原始值的结构,以及“constant"值,然后将其作为 in) 传递。

  2. 在调用函数之前设置一个全局变量。 这是个坏主意。

  3. 您可以将此函数编写为宏,以避免复制和粘贴维护的噩梦。 这是个坏主意。

关于c - 修改函数指针的签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6062593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com