大师建筑案例分析:C语言函数定义的问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 20:26:56
教程上的写法是:
int funcName(int paraA, char paraB)

而某些地方有这样的定义:
int WINAPI WinMain (...)
int CDECL MessageBoxPrintf()

那么中间的 WINAPI 和 CDECL 在这里是作为什么出现的?

[注意]我不是在问"什么是 WinAPI 或 CDECL".我只想知道更多关于C函数定义的知识. 请直接回复或给出相关链接. 谢谢!!!

WINAPI其实是一个宏,和cdecl一起,是microsoft扩展的修饰符,不属于标准C的语法。

这些修饰符控制了函数调用的一些属性,比如压栈次序,返回值的实现方式等等,一般编程看不出区别,只是和操作系统打交道的地方,可以要求用WINAPI或者其他的,比如回掉函数。

第一个是定义一个叫funcname的子函数
其中有变量a b a为int型,b为char型

下面那个
(...说明:WinMain函数是Windows程序入口点函数,由OS调用,当OS启动应用程序的时候,winmain函数的参数由OS传递的
第二个的MessageBoxPrintf根第一个一样

WINAPI识别字在WINDEF.H定义,语句如下:
#define WINAPI __stdcall
该语句指定了一个调用约定,包括如何生产机器码以在堆栈中放置函数调用的参数。许多Windows函数调用声明为WINAPI。

CDECL规定参数从右到左的是顺序压参数入栈,由调用者将参数弹出栈。