帮忙解释一下这段代码。

fengwl 2003-09-07 05:49:00
typedef struct
{
int (*Init)(void * hinstance ,void *wndproc)
...
}refexport_t;
...
extern refexport_t re;
...
re.Init(global_hInstance,MianWndProc);

...
...全文
29 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengwl 2003-09-07
  • 打赏
  • 举报
回复
问题是,我现在怎么也找不到那个函数的实现体,已经找遍整个工程了,就是没有,是不是可能在一个动态连接库里面定义的函数??
techlibin 2003-09-07
  • 打赏
  • 举报
回复
to oyd(cplusplus):不见得是C版本的,在C++中,结构几乎就是类,上面的代码可以理解为定义了一个类的函数指针。

refexport_t是类,由于在外部声明了其对象,所以在这里通过extern修饰来访问它。在某个地方其对象re肯定被初始化,包括其函数指针Init。结果是rc.Init指向一个函数,函数的原型如kuangjingbo(kuangjingbo) 所说。既然函数指针已经指向了某个具体函数的实现体,所以就可以调用。
寻开心 2003-09-07
  • 打赏
  • 举报
回复
函数指针啊。
在整个程序当中会有一句
re.Init = ...
这样的代码,可能不在该cpp下,否则不用extern了

那个代码肯定被你忽略了
找到那段代码,然后看看 = 符号后面的东西,就知道了
oyd 2003-09-07
  • 打赏
  • 举报
回复
其实就是c版本的"封装"
fengwl 2003-09-07
  • 打赏
  • 举报
回复
re.Init(global_hInstance,MainWndProc);
这一句,是个什么样的调用方法??
kuangjingbo 2003-09-07
  • 打赏
  • 举报
回复
typedef struct
{
int (*Init)(void * hinstance ,void *wndproc);
...
}refexport_t;
肯定是定义了一个结构类型,其中有一个域是Init,它指向一个函数,至于是什么函数由你自己决定。该函数要满足:返回值是int型;参数有两个,都是void *型。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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