关于“_stdcall”关键字的定义问题

Cash0627 2005-07-21 08:25:45
我在《visual c++.net语言参考手册》一书中看到“_stdcall”关键字,其中有些描述不太懂,希望高手帮忙解释一下:

1、堆栈维护责任:
被调用的函数从堆栈中弹出自己的参数

2、命名修饰约定:
在名称前加上下划线:将@符号以及后面的参数列表的字节数(十进制)加到名称后。因此,声明为int func(int a,double b)的函数经过修饰后变为:_func@12
...全文
86 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
vrace 2005-07-22
  • 打赏
  • 举报
回复
这个只是众多调用方式中的一种。如果你不用汇编,或者你不搞破解,没必要研究它。

比如说,一个 stdcall 的函数 MessageBox

/* C code */
MessageBox(0, "Hello", "Hi", MB_OK);

用汇编就是(类似哈,用汇编当然不是这样写的)
push MB_OK
push offset szHi
push offset szHello
push 0
call MessageBox

再如, printf 函数,是另一种调用方式

/* c code */
printf("Test %s", aaa);

; asm

push 0
push offset szTest
call printf
add esp, 4 *2

自己看看

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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