初学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的指针类型。
书上说前一个参数是一个函数名称,该函数的参数由后一个参数设定。可为什么要定义的这么复杂?谁能解释一下这个设定函数名称的参数各个部分的含义?我是初学者,请说详细一点。
...全文
77 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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 *)我也不太理解,正在学习中。。。。。。
共同进步罗

69,371

社区成员

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

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