关于函数指针问题,

ydfigo 2003-07-31 10:14:05
头文件来,调用外面的Dll,静态的
I16 __stdcall DIO_AUXDI_EventMessage (U16 CardNumber, I16 AuxDIEn, HANDLE windowHandle, U32 message, void *callbackAddr());

问题焦点void *callbackAddr());

调用的时候:
DIO_INT2_EventMessage (card, INT2_EXT_SIGNAL, hWnd, NULL, (void *) cbfn);

//call back function

LRESULT CALLBACK cbfn()
{ .... }

编译时出错:

[C++ Error] interrupt.cpp(47): E2034 Cannot convert 'void *' to 'void * (*)()'



请问是什么问题呢,函数指针 void * (*)() 是指什么。急


...全文
51 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
glyc 2003-08-01
  • 打赏
  • 举报
回复
typedef void (*FUNPROC)();

DIO_INT2_EventMessage (card, INT2_EXT_SIGNAL, hWnd, NULL, (FUNPROC) cbfn);
ydfigo 2003-08-01
  • 打赏
  • 举报
回复
头文件。
extern "C" __declspec(dllimport) I16 __stdcall DIO_INT1_EventMessage (U16 CardNumber, I16 Int1Mode, HANDLE windowHandle, U32 message, void *callbackAddr());
void callbackAddr();

DIO_INT1_EventMessage (card, INT1_FP1C0, NULL, NULL, void *callbackAddr());

关键问题:void *callbackAddr());

void callbackAddr()
{
ShowMessage("ddd");
}

编译
[C++ Error] Unit1.cpp(50): E2188 Expression syntax
ydfigo 2003-08-01
  • 打赏
  • 举报
回复
这是在中断服务程序,CBFN是我要调用的中断服务程序。
ydfigo 2003-08-01
  • 打赏
  • 举报
回复
lanren_me(阿波)的
DIO_INT2_EventMessage (card, INT2_EXT_SIGNAL, hWnd, NULL, (void *) &cbfn);
仍然不行,也是同样的错。

是否是关于我的dll用了C++builder来编译成静态的Lib的问题呢?
这是一个关于硬件驱动的凌华数据采集卡的驱动。急

书生 2003-08-01
  • 打赏
  • 举报
回复
Mark.
lanren_me 2003-08-01
  • 打赏
  • 举报
回复
DIO_INT2_EventMessage (card, INT2_EXT_SIGNAL, hWnd, NULL, (void *) &cbfn);
zcchm 2003-08-01
  • 打赏
  • 举报
回复
需要做类型转换
hong668 2003-07-31
  • 打赏
  • 举报
回复
cbfn是你的回调函数的反回值,
是一个可以指向任意类型的指针,我认为你反回的只要是实际的指针就可以,
也就是传一个指针,不要用void*去转化了吧。

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧