分类: VS2010 C++ 调试
LRESULT就是LONG
CALLBACK专用在回调函数里,看看VC/BCB里的定义VC:WINDEF.h
#define CALLBACK PASCAL //_pascal
#define WINAPI CDECL //_cdecl BCB:windef.h
#define CALLBACK __stdcall
#define WINAPI __stdcall __cdecl是C/C++和MFC程序默认使用的调用约定,也可以在函数声明时加上__cdecl关键字来手工指定。采用__cdecl约定时,函数参数按照从右到左的顺序入栈,并且由调用函数者把参数弹出栈以清理堆栈。因此,实现可变参数的函数只能使用该调用约定。由于每一个使用__cdecl约定的函数都要包含清理堆栈的代码,所以产生的可执行文件大小会比较大。__cdecl可以写成_cdecl。
__stdcall调用约定用于调用Win32 API函数。采用__stdcal约定时,函数参数按照从右到左的顺序入栈,被调用的函数在返回前清理传送参数的栈,函数参数个数固定。由于函数体本身知道传进来的参数个数,因此被调用的函数可以在返回前用一条ret n指令直接清理传递参数的堆栈。__stdcall可以写成_stdcall。
__fastcall约定用于对性能要求非常高的场合。__fastcall约定将函数的从左边开始的两个大小不大于4个字节(DWORD)的参数分别放在ECX和EDX寄存器,其余的参数仍旧自右向左压栈传送,被调用的函数在返回前清理传送参数的堆栈。__fastcall可以写成_fastcall。 在默认情况下,采用__cdecl方式,因此可以省略.
WINAPI一般用于修饰动态链接库中导出函数
CALLBACK仅用于修饰回调函数

_cdecl和_stdcal的区别相关推荐

  1. __cdecl、__stdcall、__fastcall 与 __pascal 浅析

    X86调用约定 calling convention:https://www.cnblogs.com/shangdawei/p/3323252.html __cdecl.__stdcall.__fas ...

  2. _cdecl、_stdcall 、_fastcall、_thiscall 函数调用方式与区别

    几种函数调用方式 __cdecl 是C DECLaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈.被调用 ...

  3. _stdcall与_cdecl的区别

    _stdcall与_cdecl的区别 最大的区别就是__cdecl是由调用函数者释放堆栈,而__stdcall由被调用者释放.但是在调用任一种函数时,都没有进行显示的释放堆栈工作.这个工作由编译器完成 ...

  4. 【转】调用约定__cdecl、__stdcall和__fastcall的区别

    什么是调用约定 函数的调用约定,顾名思义就是对函数调用的一个约束和规定(规范),描述了函数参数是怎么传递和由谁清除堆栈的.它决定以下内容:(1)函数参数的压栈顺序,(2)由调用者还是被调用者把参数弹出 ...

  5. 使用def文件从dll导出和_declspec(dllexport)导出区别以及调用示例

    在C++中,我们可以通过 __declspec(dllexport) 将函数导出为Dll中供其它程序使用,例如: _declspec(dllexport) int add(int a, int b); ...

  6. _stdcall和_cdec区别

    (1) _stdcall调用 _stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈. WIN32 Api都采用_stdcall调用方式,这样的宏定 ...

  7. _stdcall _cdec区别

    (1) _stdcall调用 _stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈. WIN32 Api都采用_stdcall调用方式,这样的宏定 ...

  8. c语言程序中函数调用本身叫什么,在C语言中函数调用方式有什么区别

    在使用VC进行函数定义时,通常会指定该函数调用方式,那么在C语言中函数调用方式有什么区别呢?下面小编找到了一下教程,分享给大家,希望可以帮助到大家. 通常在使用VC进行函数定义时会指定该函数调用方式, ...

  9. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

最新文章

  1. debian 10 ssh简单配置
  2. Windows phone 8 学习笔记
  3. python pip国内源_Python 修改pip源为国内源
  4. JavaScript实现TwoQueues缓存模型
  5. 图数据集之cora数据集介绍 --- 适用于GCN任务
  6. WinDbg 命令三部曲:(一)WinDbg 命令手册
  7. jmeter 线程执行顺序_JMeter基础之--元件的作用域与执行顺序
  8. csm和uefi_uefi是什么意思?uefi和BIOS的区别是什么?
  9. Word控件Spire.Doc 转换教程(三):如何将 Word 转换为 PDF
  10. EditPlus常用技巧
  11. 工作中常见的方法和法则(简单的法则不简单)
  12. 工具_Typora免费版下载(Typora最后一个免费版)md编辑器
  13. 【LaTeX应用】latex排版中插入参考文献
  14. 两层板如何做阻抗控制呢
  15. Flurry 分析 API 中文教程(Flurry Analytics API)
  16. git版本管理软件——git储藏
  17. Shiro的简单入门(一)
  18. 6 实现多主机间 Docker 容器通信
  19. 什么是java的事物
  20. 计算机网络应用层详解

热门文章

  1. 数据库-表中导入数据-insert
  2. RocketMQ简介、环境搭建
  3. sed模式空间(pattern space)和保持空间(hold space)
  4. 每月分享github上有意思的项目
  5. 3.2Python的循环结构语句:
  6. Windows下Oracle的下载与安装
  7. Vue 动态创建实例
  8. 从“负电价”说起:谈谈德国新能源消纳的借鉴意义
  9. 练习、C# 结构体、冒泡排序
  10. python sys.argv[]用法