并不是所有的语言都支持_cdcel调用规则,但是都支持_sdtcall调用规则, 假如你用VC做了一个DLL,导出了某些函数,如果你想这个DLL被其他语言也能调用的话,VB.DEPHI.PB..你的把他的调用约定声明为__stdcallwindows   api都是_stdcall调用规则,

函数调用约定确定一个程序如何实现一个函数调用及参数如何传递。在单一语言程序中,调用约定几乎总是正确的,这是因为对所有模块总有一个缺省的约定并且头文件会负责调用和被调用程序之间的一致性。在一个混合语言程序中,不同的语言不可能分享同一个头文件。由于调用约定而产生的错误在编译时无法发现,直到程序在运行时(run-time)实现函数调用时才出现并会立即导致应用程序崩溃。

关键字                                                       栈的维护者          参数传递 
__cdecl                                                                   调用者 参数反序入栈(右-> 左) 
__stdcall                                                             被调用者 参数反序入栈(右-> 左) 
__fastcall                                                            被调用者 参数先存寄存器,接着入栈 
thiscall(并非关键字)       被调用者 参数入栈,this指针存ECX

在C++中,可以在函数声明或定义时用关键字__stdcall指定调用约定。__stdcall调用约定经常在Windows程序或API函数中使用。在GUI程序中,PASCAL、WINAPI和CALLBACK都被定义为__stdcall。C语言的缺省调用约定为__cdecl。

__stdcall产生的名字修饰是将名字符号前加下划线(_),并且后加”@”和函数参数字节数(所需栈空间)

_stdcall的作用相关推荐

  1. C++ 使用_beginthreadex创建线程、线程句柄(等待线程关闭)、线程id的作用(发送线程消息)

    _beginthreadex c语言库 process.h 中的函数, 用来创建一个线程 unsigned long _beginthreadex(       void *security,     ...

  2. Object的finalize()方法的作用是否与C++的析构函数作用相同

    Object的finalize()方法的作用是否与C++的析构函数作用相同 public class Finalization {private static Finalization finaliz ...

  3. 浅显易懂 Makefile 入门 (02)— 普通变量和自动变量定义、使用($@、$^、$< 作用)、变量覆盖 override、变量的来源 origin

    1. 变量的定义 Makefile 文件中定义变量的基本语法如下: 变量的名称=值列表 变量的名称可以由大小写字母.阿拉伯数字和下划线构成.等号左右的空白符没有明确的要求,因为在执行 make 的时候 ...

  4. 【B/S实践】解决:vs中修改样式表后不起作用的问题

    缓存,有好多,cpu和内存之间的三级缓存,浏览器内的缓存! 缓存是因为速率不对等,通过缓存来加速内容的显示! 今天我在敲牛腩的时候遇到一个问题,找了半小时,才发现是缓存导致的问题! 试着运行aspx文 ...

  5. 卷积神经网络之卷积计算、作用与思想 深度学习

    博客:blog.shinelee.me | 博客园 | CSDN 卷积运算与相关运算 在计算机视觉领域,卷积核.滤波器通常为较小尺寸的矩阵,比如3×33×3.从这个角度看,多层卷积是在进行逐层映射,整 ...

  6. 机器学习——标准化/归一化的目的、作用和场景

    对每个特征进行归一化处理,使得每个特征的取值缩放到0~1之间.这样做有两个好处: 模型训练更高效. 特征前的权重大小可代表该变量对预测结果的贡献度(因为每个特征值本身的范围相同). (一)归一化的作用 ...

  7. Linux操作系统下文件作用

    linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的 ...

  8. python sys.argv[] 的作用

    sys.argv[]是什么 argv 是sys库里面的所以使用的 需要先引入sys (使用import sys) sys.argv[]的作用 从程序外获取参数,怎样理解呢,例如在终端中运行test脚本 ...

  9. C++ namespace 的作用以及使用

    namespace 是什么: 命名空间(namespace)是一种描述逻辑分组的机制,可以将按某些标准在逻辑上属于同一个任务中的所有类声明放在同一个命名空间中.标准C++库(不包括标准C库)中所包含的 ...

  10. Android Environment 的作用以及常用的方法

    从源码中可以看到这样一句话 Provides access to environment variables Environment的作用是:  提供对环境变量的访问 常见的方法 //外部存储设备的当 ...

最新文章

  1. 文本文件与二进制文件,C++流(待续)
  2. asp.net性能常用优化
  3. compareHist函数 例子
  4. Windows Mobile获取SIM卡上的所有电话号码
  5. 【干货】从用户体验谈产品经理如何提升团队协作能力
  6. iOS - block变量捕获原理
  7. 程序员过关斩将--错误的IOC和DI
  8. haproxy和keepalived的理解(转载)
  9. java动态类加载_实现Java动态类载入机制
  10. 使用asp.net mvc开发应用程序,页面中的page.IsPostback还有用处吗?
  11. XShell——使用
  12. Open vSwitch实践——VLAN
  13. 打造自己的Android源码学习环境之五:编译Android源代码
  14. c语言ip地址转16进制,点分十进制形式的ip地址转化为十六进制数
  15. 谈谈我对元宇宙的理解
  16. egde被360导航劫持
  17. ASDFZ 3633 -- 排兵布阵
  18. 2018网易互娱笔试1——花砖拼接C++
  19. 基础篇——ROS入门:学习资料、基本介绍、安装配置、文件系统、包创建
  20. EXCEL组合功能函数和VBA汇总

热门文章

  1. 3d胆码计算机方法,3D百十个位定胆技巧准确率95
  2. Django模板语法和ModelForm
  3. JavaScript使用drag事件
  4. android PDFview加载PDFPDF加水印
  5. html5网页及Cocos中生成二维码
  6. android体脂代码,该减肥了吗?教你用手机App测量体脂率
  7. mysql64官网下教程_最新版MySQL 8.0.22下载安装超详细教程(Windows 64位)
  8. i.MX6ULL终结者硬件资源说明
  9. 2021年机修钳工(中级)报名考试及机修钳工(中级)考试资料
  10. 软件测试简历如何扬长避短(二)