__stdcall约定
来源:互联网 发布:外国网购用什么软件 编辑:程序博客网 时间:2024/06/05 01:14
如果通过VC++编写的DLL欲被其他语言编写的程序调用,应将函数的调用方式声明为__stdcall方式,WINAPI都采用这种方式,而C/C++缺省的调用方式却为__cdecl。__stdcall方式与__cdecl对函数名最终生成符号的方式不同。若采用C编译方式(在C++中需将函数声明为extern "C"),__stdcall调用约定在输出函数名前面加下划线,后面加“@”符号和参数的字节数,形如_functionname@number;而__cdecl调用约定仅在输出函数名前面加下划线,形如_functionname。
Windows编程中常见的几种函数类型声明宏都是与__stdcall和__cdecl有关的(节选自windef.h):
#define CALLBACK __stdcall //这就是传说中的回调函数
#define WINAPI __stdcall //这就是传说中的WINAPI
#define WINAPIV __cdecl
#define APIENTRY WINAPI //DllMain的入口就在这里
#define APIPRIVATE __stdcall
#define PASCAL __stdcall
在lib.h中,应这样声明add函数:
int __stdcall add(int x, int y);
在应用工程中函数指针类型应定义为:
typedef int(__stdcall *lpAddFun)(int, int);
- __stdcall约定
- __stdcall约定
- __stdcall约定
- __STDCALL约定
- 调用约定__stdcall / __cdecl
- __stdcall调用约定
- __cdecl与 __fastcall与 __stdcall调用约定
- __cdecl与 __fastcall与 __stdcall调用约定
- __cdecl __fastcall与 __stdcall 调用约定
- 函数调用约定__stdcall与__cdecl
- __cdecl __stdcall各种调用约定详解
- C++常用的调用约定__cdecl &__stdcall
- 函数调用约定:__cdecl,__stdcall,__fastcall,__thiscall
- 函数的调用约定 __stdcall __cdecl __fastcall
- 函数调用约定 __cdecl __fastcall __stdcall
- __cdecl __fastcall与 __stdcall 调用约定
- __stdcall和__cdecl调用约定及名称改编约定
- 函数命名规则及调用约定(__cdecl,__stdcall,__fastcall)
- winsock收发数据数据的缓存区类型
- google maps与arcgis结合
- 母函数形式的生成
- 用MySQL创建数据库和数据库表
- python 总结
- __stdcall约定
- Windows完成端口与Linux epoll技术简介
- Inline内联函数的总结贴
- 读取本地EXCEL文件
- 检测点9.2
- hashmap 源码阅读
- VI命令
- Hibernate Annotation
- C# (STA and MTA) 多线程