我在ADT中有一个功能:
Pgroup new_group(int size, void (*foo)(void *));
在我的其他课程中,我有这个函数发送:
void foo(Pstruc x);
x是指向结构的指针。当我尝试调用new_group时,我收到错误“expected'void(*)(void )'但参数类型为'void()(struct struc_ *)”。这就是我一直在说的:
Pgroup group = new_group(num, &foo);
有什么建议吗?
答案 0 :(得分:0)
您可以将参数强制转换为正确的类型以消除诊断:
Pgroup group = new_group(num, (void (*)(void *)) foo);
请注意,这不可移植,因为C不保证不同指针之间的表示是相同的。最好的方法是使用在声明中匹配的类型。
答案 1 :(得分:0)
您可以将原始功能从void foo(Pstruc x);
重写为void foo(void* x);
。
或转换其类型:(void(*)(void*))foo
。