社区
VC.NET
帖子详情
关于“_stdcall”关键字的定义问题
Cash0627
2005-07-21 08:25:45
我在《visual c++.net语言参考手册》一书中看到“_stdcall”关键字,其中有些描述不太懂,希望高手帮忙解释一下:
1、堆栈维护责任:
被调用的函数从堆栈中弹出自己的参数
2、命名修饰约定:
在名称前加上下划线:将@符号以及后面的参数列表的字节数(十进制)加到名称后。因此,声明为int func(int a,double b)的函数经过修饰后变为:_func@12
...全文
139
1
打赏
收藏
关于“_stdcall”关键字的定义问题
我在《visual c++.net语言参考手册》一书中看到“_stdcall”关键字,其中有些描述不太懂,希望高手帮忙解释一下: 1、堆栈维护责任: 被调用的函数从堆栈中弹出自己的参数 2、命名修饰约定: 在名称前加上下划线:将@符号以及后面的参数列表的字节数(十进制)加到名称后。因此,声明为int func(int a,double b)的函数经过修饰后变为:_func@12
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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
自己看看
_
std
call与_cdecl区别 (QT 加载MFC的dll时,要注意的"_
std
call"或者CALLBACK的
问题
)
转载自 http://blog.csdn.net/leehong2005/article/details/8607536 看到这篇好文章,帮了我很大忙,直接转载过来了。 查看全文,请跳转上面链接地址。 前段时间编程时遇到过这么一个
问题
,我写了一个DLL,把里面的一个函数导出来,然后再
定义
一个签名与其匹配的函数指针,动态地把这个DLL加载起来(LoadLibrary)
__cdecl和__
std
call的区别和联系
1、__cdecl和__
std
call __cdecl是CDeclaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。 __
std
call是StandardCall的缩写,是C++的...
从写线程函数时遇到的__
std
call谈起
今天写线程函数时,发现msdn中对ThreadProc的
定义
有要求:DWORD WINAPI ThreadProc(LPVOID lpParameter);不解为什么要用WINAPI宏
定义
,查了后发现下面的
定义
。于是乎需要区别__
std
call和__cdecl两者的区别; #define CALLBACK __
std
call #define WINAPI
_
std
call是什么?
DLL中调用约定和名称修饰(一)调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议。这种协议规定了该语言的函数中的参数传送方式、参数是否可变和由谁来处理堆栈等
问题
。不同的语言
定义
了不同的调用约定。 在C++中,为了允许操作符重载和函数重载,C++编译器往往按照某种规则改写每一个入口点的符号名,以便允许同一个名字(具有不同的参数类型
MemorySharp 调用约定详解:Cdecl、
Std
call、Fastcall、Thiscall 如何选择?
MemorySharp 是一个基于 C# 的 Windows 内存编辑库,它最强大的功能之一就是能把汇编代码注入远程进程并直接调用目标函数。而**调用约定**(Calling Convention)正是决定这些函数调用能否成功的关键。对新手来说,Cdecl、
Std
call、Fastcall、Thiscall 这四兄弟常常让人一头雾水——选错了,轻则崩溃蓝屏,重则直接让目标程序闪退。本文将用最通俗的
VC.NET
7,538
社区成员
27,670
社区内容
发帖
与我相关
我的任务
VC.NET
.NET技术 VC.NET
复制链接
扫一扫
分享
社区描述
.NET技术 VC.NET
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章