我正在尝试使用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的超集。