所以我试图解决这个警告:指向函数的指针和指向数据的指针之间的非标准转换
我还没有找到一个好的方法来做到这一点。这都是用 c 而不是 c++ 完成的。
目前我有一个头文件:
typdef struct myConnection_s
{
...
void* Callback
} myConnection_t, *Connection
typdef HRESULT (*HttpHook)(Connection, char*);
在其他文件 foo.c 中我有:
....
Connection myConnection;
...
HttpHook myHook = (HttpHook) myConnection->Callback;
...
return myHook(.....);
有没有一个好的方法可以解决这个警告而不需要做太多的改变?如果不是,重写这个的最佳方法是什么?
谢谢!
最佳答案
typedef struct myConnection_s
{
/* ... */
HttpHook Callback;
} myConnection_t, *Connection;
您也可以稍后删除显式强制转换:
HttpHook myHook = myConnection->Callback;
if (myHook)
myHook(/* ... */);
编辑:您似乎遇到了排序问题...请尝试以下操作:
struct myConnection_s;
typedef HRESULT (*HttpHook)(struct myConnection_s *, char*);
typedef struct myConnection_s
{
/* ... */
HttpHook Callback;
} myConnection_t, *Connection;
关于指针到函数指针之间的转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11161137/