在C和C ++中为void指针指定函数指针

时间:2016-08-26 23:30:57

标签: c++ c pointers function-pointers

我正在尝试使用C ++项目中的C库。

C库有这样的函数,我应该将回调函数传递给:

void c_function(int args, const void *func){};

所以我的C ++代码应该像这样调用它:

int function1(int a) {return a;}
int function2(int a, int b) {return a+b;}

int main(int argc, char *argv[])
{
    c_function(1, function1);
    c_function(2, function2);
    return 0;
}

我的问题是,如果我将此调用代码编译为C,它可以正常工作,甚至没有任何警告。但是,如果我将调用代码编译为C ++,则会出现编译错误:例如,从“int()(int)”到“const void ”的转换无效。

我不确定我需要做些什么才能让它在C ++中运行。我将在我的C ++程序中进行大量调用。

我的问题是:如何在不改变调用代码的情况下完成这项工作,为什么这在C而不是C ++中工作?我认为C ++是C的超集。

0 个答案:

没有答案