zoukankan      html  css  js  c++  java
  • 函数的调用约定

    1._cdecl,C Declaration的缩写,是C和C++默认的调用方法
    所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈,对于传递参数的内存栈是由调用者来维护的(实现可
    变参数的函数只能使用该调用约定)。被调用函数无需要求调用者传递多少参数
    每个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大,VC将函数编译后在函
    数名的前面加上下划线前缀
    2._stdcall是Standard Call的缩写,是C++的标准调用方式
    所有参数从右向左依次入栈,如果是调用类成员的话,最后一个入栈的是this指针,这些堆栈中的参数由被调用函数在返
    回后清除,成为自动清栈,函数在编译的时候必须确定参数个数,调用者必须严格的控制参数的生成方式,VC将函数编译
    后会在函数名前面加上下划线前缀,在函数名后加"@"和参数的字节数
    3._fastcall,特点是快,通过寄存器来传送参数的,VC将编译后的函数名前面加上"@"前缀,在函数名后面加上"@"和参数
    的字节数
    4._thiscall,仅用于C++成员函数,this指针存放在CX寄存器,参数从右向左,

  • 相关阅读:
    P、NP及NPC问题
    latex test3
    latex test2
    test
    整体二分
    bzoj2819 nim (树上带修改查询路径异或和)
    kmp模板题
    KM的三种写法比较
    电视转播
    树状数组处理区间查询和区间修改的问题
  • 原文地址:https://www.cnblogs.com/xiaoxiaocaicai/p/3594806.html
Copyright © 2011-2022 走看看