__stdcall, __cdecl和__fastcall

__stdcall, __cdecl, __fastcall就是函数属性(Function Attribute),是GNU C的__attribute__机制, 可以理解为用来修饰一个函数的东西

其中

__stdcall :指定参数从右到左入栈,并且在函数返回之前清除参数占用的栈空间

__cdecl   :指定参数从右到左入栈,但是在函数返回之后才清楚参数占用的栈空间

__fastcall:将左边两个4字节的参数存入CPU寄存器ECX, EDX, 并且在函数返回之前清除参数占用的栈空间

 

函数返回之前清理跟函数返回之后清理在应用起来的区别总的来说就是调用者不需要处理被调用者的清理问题,由于编译器的不同,有可能调用者函数产生栈的方式跟被调用者的不同,所以处理起来非常棘手.

posted @ 2009-01-23 15:34  4h  阅读(212)  评论(0编辑  收藏  举报