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寄存器中而不是内存堆栈中。该规范不能用于成员函数。
  • 相关阅读:
    pku夏令营面试
    机器学习实验一SVM分类实验
    面试相关-转载-well,yzl——持续更新
    2715:谁拿了最多奖学金-poj
    1005:I Think I Need a Houseboat-poj
    2810:完美立方-poj
    2943:小白鼠排队-poj
    rem+媒体查询---移动端 设计稿以375
    微信小程序 + mock.js 实现后台模拟及调试
    一个div 实现纸张阴影效果
  • 原文地址:https://www.cnblogs.com/scnutiger/p/1576647.html
Copyright © 2011-2022 走看看