永发信息网

C++ MFC编程中关于线程处理的问题

答案:1  悬赏:70  手机版
解决时间 2021-04-05 00:39
  • 提问者网友:我的未来我做主
  • 2021-04-04 12:09
C++ MFC编程中关于线程处理的问题
最佳答案
  • 五星知识达人网友:持酒劝斜阳
  • 2021-04-04 12:39
返回值   首先 一个是DWORD 双字  另外一个是 无符号 INT 是一样的
返回值  大小一样 没有任何问题

有个WINAPI声明  WINAPI 就是一个调用方式  是在内存中 汇编 入栈参数的次序以及
调用完毕后 恢复堆栈时 是由自己 还是由外部 这个东西 在普通编程中 基本用不上
除非是  指明 需要一个函数 必须是 WINAPI也就是 STDCALL类型 的
不然可以不加。

WINAPI见windef.h这个头文件
#define WINAPI__stdcall
默认情况下,我们的函数调用都是遵循__stdcall这个规则的。当然,也有诸如__cdecl、__pascal等规则。
使用__stdcall还是__cdecl或__pascal,在纯Windows编程下并非特别需要。
__stdcall:
1、进行函数调用,函数参数的入栈方式是最右边先入栈。
2、同时__stdcall规定,被调函数负责栈的回收(调用者只负责压栈). 题外话:__pascal的调用规则是从左到右,正好与__stdcall相反。
3、C调用约定(即用__cdecl关键字说明)(The C default calling convention)按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调用者来维护的(正因为如此,实现可变参数vararg的函数(如printf)只能使用该调用约定)当然,这些工作是应用程序自己完成的,不需要编写者动手。汇编语言另当别论(POP SP POP BP等) 。另外,在函数名修饰约定方面也有所不同。 _cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。VC将函数编译后会在函数名前面加上下划线前缀。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯