C++函数定义语法
在MFC中有这个函数:
- C/C++ code
int AFXAPI AfxMessageBox( UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT) -1 );
int 是返回值,AfxMessageBox是函数名,括号中的是参数,那么AFXAPI 在C++语法中是什么成份?
[解决办法]
#define AFXAPI __stdcall
[解决办法]
#ifndef AFXAPI
#define AFXAPI __stdcall
#endif
标准调用约定
[解决办法]
_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。
作用如下:
将函数的调用规则指定为标准的C方式。
对于不同的语言,函数的调用规则可能有些不同,主要是各参数的压栈序顺序不同。
比如有的语言再编译为最终代码时将各参数从左向右依次压栈,有的则正好相反,
从右向左压栈。
在用C语言和其他语言进行混合编程时,如果两者的顺序不一样,为了保证调用正常进行,
就要用到一些这样的声明。