unsigned WINAPI icc(HANDLE fd);以上这个声明中这个函数的返回值是什么类型,unsigned WINAPI是一种类型吗,那是什么类型。

解决方案 »

  1.   

    WINAPI 为函数调用规则定义
    WINAPI 为 __stdcall方式调用
      

  2.   

    unsigned为函数返回值类型,WINAPI为函数调用方式:
    #ifdef _MAC
    #define CALLBACK    PASCAL
    #define WINAPI      CDECL
    #define WINAPIV     CDECL
    #define APIENTRY    WINAPI
    #define APIPRIVATE  CDECL
    #ifdef _68K_
    #define PASCAL      __pascal
    #else
    #define PASCAL
    #endif
    #elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
    #define CALLBACK    __stdcall
    #define WINAPI      __stdcall
    #define WINAPIV     __cdecl
    #define APIENTRY    WINAPI
    #define APIPRIVATE  __stdcall
    #define PASCAL      __stdcall
    #else
    #define CALLBACK
    #define WINAPI
    #define WINAPIV
    #define APIENTRY    WINAPI
    #define APIPRIVATE
    #define PASCAL      pascal
    #endif
      

  3.   

    我的理解:返回值类型是 unsigned,unsigned 应该就是 unsigned int,即 UINT;WINAPI 表示函数出栈方式,函数调用的时候由调用方负责压栈,但由被调用函数负责出栈。
      

  4.   

    返回值类型应该是unsigned int.
    WINAPI见windef.h这个头文件
    #define WINAPI __stdcall
      默认情况下,我们的函数调用都是遵循__stdcall这个规则的。当然,也有诸如__cdecl、__pascal等规则。
      

  5.   

    unsigned WINAPI icc(HANDLE fd);
    =======
    是不是写错了,unsigned并不是一种类型
      

  6.   


    正解
    另外,unsigned int类型可以简写为unsigned
      

  7.   

    默认情况下不是__cdecl吗?一般使用dll中的函数时才用__stdcall。
      

  8.   

    WINDOWS.H now supports the WINAPI macro, which translates to the appropriate calling convention for the target. Use WINAPI where you previously used PASCAL or __far __pascal. MSDN里如是说~
      

  9.   

    usigned 就是usigned int缩写吧
      

  10.   


    嗯,回调函数和DLL中__stdcall。谢谢指正啊~
      

  11.   

    1、_stdcall是Pascal方式清理C方式压栈,通常用于Win32 Api中,函数采用从右到左的压栈方式,   自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。 int f(void *p) -->> _f@4(在外部汇编语言里可以用这个名字引用这个函数)   2、C调用约定(即用__cdecl关键字说明)(The C default calling convention)按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调用者来维护的(正因为如此,实现可变参数vararg的函数(如printf)只能使用该调用约定)。另外,在函数名修饰约定方面也有所不同。 _cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。VC将函数编译后会在函数名前面加上下划线前缀。   。   3、__fastcall调用的主要特点就是快,因为它是通过寄存器来传送参数的(实际上,它用ECX和EDX传送前两个双字(DWORD)或更小的参数,剩下的参数仍旧自右向左压栈传送,被调用的函数在返回前清理传送参数的内存栈),在函数名修饰约定方面,它和前两者均不同。__fastcall方式的函数采用寄存器传递参数,VC将函数编译后会在函数名前面加上"@"前缀,在函数名后加上"@"和参数的字节数。   4、thiscall仅仅应用于“C++”成员函数。this指针存放于CX/ECX寄存器中,参数从右到左压。thiscall不是关键词,因此不能被程序员指定。 
      

  12.   

    unsigned 是unsigned int,这个代表法返回值,WINAPI代表调用约定__stdcall