所以,这是代码:
void pass(void(), int);
void hello(int);
int main(void)
{
pass(hello,0);
return 0;
}
void pass(void rfunc(),int a)
{
rfunc(a);
}
void hello(int a)
{
printf("%d",a);
}
' 0'的输出按预期打印。但是,我收到了这些警告,我试图修复这些警告。错误说:
in function 'main':
warning: passing argument 1 of 'pass' from incompatible pointer type
如何修复此警告?
答案 0 :(得分:3)
pass
的第一个参数需要一个void (*)()
类型的函数指针,但是你要传入类型为void (*)(int)
的函数指针。这是一种不兼容的类型。
更改pass
的参数以接受正确的类型:
void pass(void(int), int);
...
void pass(void rfunc(int),int a)
{
...