将c ++函数作为参数传递给采用void *(无效指针)的c函数

时间:2019-03-05 23:33:21

标签: c++ c casting function-pointers

我有一个带有原型的c库函数:

int setCallback(void* callback_function);

它可以接受匹配的c函数

int myCallback(int x);
setCallBack(myCallback);  // register function as callback

现在,我想在c ++项目中使用此c库,并使其调用命名空间中定义的c ++函数。但是,传递等效的c ++函数会给出g ++ 5.4.0的错误:

setCallBack(myCPPCallBack);  // ERROR!
invalid conversion from ‘int (*)(int)’ to ‘void*’ [-fpermissive]

我可以通过下面的强制转换来构建和运行它。

setCallBack((void*)myCPPCallBack);

我的问题是,这种不确定的行为还是其他不明智的做法?有什么风险,还有其他选择吗?

0 个答案:

没有答案