windows – 为什么Microsoft选择stdcall作为他们的API约定?
发布时间:2020-12-14 02:47:41 所属栏目:Windows 来源:网络整理
导读:有充分的理由吗? 他们的内部函数(未导出)是否也是stdcall约定? 解决方法 它适用于32位代码的pascal调用约定. Pascal是OS / 2和 Windows 3等16位操作系统的调用约定.为什么选择pascal是一种猜测,即使我当时是一只小小狗,但效率稍高.当您需要使用640 KB时,这
有充分的理由吗?
他们的内部函数(未导出)是否也是stdcall约定? 解决方法
它适用于32位代码的pascal调用约定. Pascal是OS / 2和
Windows 3等16位操作系统的调用约定.为什么选择pascal是一种猜测,即使我当时是一只小小狗,但效率稍高.当您需要使用640 KB时,这一点很重要.
大多数Win32函数都不是真正的stdcall,因为它还规定了导出函数在呈现给链接器之前是如何修饰的.像void Mumble(int arg)变成_Mumble @ 4. @后面的数字描述激活帧大小.但是大多数Win32功能都没有任何装饰.可能会让程序员有机会使GetProcAddress()工作.我认为装饰旨在帮助链接器检测声明的API函数签名与实际签名之间的不匹配.传递的参数数量不匹配是一个自动的kaboom,因为被调用者会从堆栈中弹出更多或更少的参数然后传递.很难诊断. stdcall的弱点,cdecl约定没有这个问题. 内部调用是stdcall,cdecl和thiscall之间的混合包.不能说我曾经检测过一种模式,虽然单步执行的Windows代码并不是我喜欢做的事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows环境下安装MySQL5.7及MySQL WrokBench
- winapi – 获取Windows中登录用户的用户名/密码
- windows – Bitvise SSH Git初始目录
- windows-server-2008-r2 – Win 2008 R2 – 复制到磁盘非常
- windows-xp – 如何强制某些应用程序使用特定的网络连接?
- windows – sysopen权限被拒绝
- windows – 如何检查文件/目录在批处理脚本中是否可写
- Windows上的Java / MongoDB消息长度错误,但Linux上没有
- dokan sshfs for windows
- windows – PermissionError:[Errno 13]权限被拒绝