传递函数和整数的函数。警告:传递""的参数来自不兼容的指针类型

时间:2017-03-17 18:52:41

标签: c++ c function debugging

所以,这是代码:

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

如何修复此警告?

1 个答案:

答案 0 :(得分:3)

pass的第一个参数需要一个void (*)()类型的函数指针,但是你要传入类型为void (*)(int)的函数指针。这是一种不兼容的类型。

更改pass的参数以接受正确的类型:

void pass(void(int), int);
...
void pass(void rfunc(int),int a) 
{
    ...