gpt4 book ai didi

C. 函数指针回调。与原型(prototype)不兼容。

转载 作者:行者123 更新时间:2023-11-30 14:26:37 24 4
gpt4 key购买 nike

我开发了一种函数回调机制。这是我的职责。

int function_root(var1,var2, int(*callback)(), ...);
所以如果var1=var2那么callback(va_arg list);

例如:

function_root(a,b,fun_clbck,x,y,z); //if a=b
we will get this: fun_clbk(x, y, z);

问题是。当我的函数回调至少有一个参数时。我收到警告与原型(prototype)不兼容

我认为问题出在我的函数根中。我用零参数声明了 int(*callback)() ,一旦我做了像 fun_clbck(int,int,int); 这样的回调它触发了这个问题。

最佳答案

i declared int(*callback)() with zero parameter

这不是真的。 int(*callback)() 不是 C89/C99 原型(prototype);它声明一个函数指针,指向返回 int 的内容,而不指定参数类型。不带参数的函数指针的正确声明是

int (*callback)(void)

and once i do a callback like fun_clbck(int,int,int); it trigger that problem

显然。为回调函数声明的参数类型必须与调用中的参数类型匹配。重新考虑你的设计,例如使用可变数量的参数:

int (*callback)(unsigned, ...)

并将实际参数的数量作为第一个参数传递。

关于C. 函数指针回调。与原型(prototype)不兼容。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8896085/

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