• 全部
  • 问答

初学windows编程者提问

zhoyan 2002-02-05 12:38:01
在深入浅出MFC,第43页
在一个函数定义中有一个参数的定义很看不懂,函数定义如下:
unsigned long _beginthreadex(
... ,
unsigned (_stdcall *start_address) (void*),
void *arglist,
... ,
);
这个函数参数实在看不懂,前一个参数先定义unsighed类型,中间加一个_stdcall类型(这是什么类型?)的指针start_address,可最后又是一个void的指针类型。
书上说前一个参数是一个函数名称,该函数的参数由后一个参数设定。可为什么要定义的这么复杂?谁能解释一下这个设定函数名称的参数各个部分的含义?我是初学者,请说详细一点。
...全文
45 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
niu_a 2002-02-05
函数定义
unsigned _stdcall func(void*)
其函数指针形式就是
unsigned (_stdcall *func)(void*)
建议看一看有关函数指针的资料
回复
mike_cx 2002-02-05
前面几个人都提到_stdcall 是告诉编译器对栈的一种操作方式,例如:从右向左压栈,我想看看这方面的详细过程(关于栈的操作),请问应该看哪方面的书,是操作系统原理吗,谢谢
回复
guduker 2002-02-05
_stdcall 是用来告诉编译器编译时采用出入栈的方式。
_stdcall标签告诉编译器该对象使用标准的windows调用协定。默认的情况下,C和C++使用__cdecl调用协定。这些可指示编译器参数的放置顺序和堆栈的移除。

至于(Void *)我也不太理解,正在学习中。。。。。。
共同进步罗
回复
发帖
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-02-05 12:38
社区公告
暂无公告