zoukankan      html  css  js  c++  java
  • 函数调用规范

    [摘至高质量程序设计指南]
    函数调用规范
    与函数栈使用密切相关的就是函数调用规范,即调用约定(Calling Convertion)。函数调用规范决定了函数调用的实参压栈、退栈及栈释放的方式,以及函数名改编(Name_Mangling)的方案,也即命名的规范(Naming Convention)。
    Windows环境下常用的调用规范有:
    (1)_cdecl:这是C++/C函数的默认调用规范,参数从右向左依次传递并压入堆栈,由调用函数负责堆栈的清退,因此这种方式利于传递个数可变的参数给被调用函数。(一般像printf这类参数可变的函数,最左边的参数都是确定的,从右向左压栈的时候,判断到参数是类型是确定的同类型说明参数传递完毕
    (2)_stdcall:这个是WinAPI函数使用的调用规范。参数从右向左依次传递并压入堆栈,由被调用函数负责堆栈的清退。该规范生成的函数代码比_cdecl更小,但当参数可变的时候,会转化为_cdecl规范。
    (3)_thiscall:是C++非静态成员函数的默认调用规范,不能使用个数可变的参数。当调用非静态成员函数的时候,this指针直接保存在ECX寄存器中而非压入堆栈中。
    (4)_fastcall:该规范所修饰的函数的实参将被直接传递到CPU寄存器中而不是内存堆栈中。该规范不能用于成员函数。
  • 相关阅读:
    (转) 应用系统性能监控(二) Pinpoint 使用
    随机滚动名字和试题 单击暂停----给媳妇儿写的爱心小应用
    最短路径问题 java
    数字全排列 java深度优先搜索
    “接竹竿”纸牌游戏 java实现运算结果
    插入排序 java代码
    选择排序 java代码
    快速排序java代码
    1. Django的安装及配置
    python3.x,pycharm的安装
  • 原文地址:https://www.cnblogs.com/scnutiger/p/1576647.html
Copyright © 2011-2022 走看看