各位大侠,我在看孙鑫的书时,在多线程编程那章里,发现他在函数前总是加了WINAPI这个关键字,想知道加与不加这个有什么用望指教!

解决方案 »

  1.   

    函数的调用方式声明
    WINAPI对应__stdcall主要作用是由谁来平栈具体可参考:http://msdn.microsoft.com/en-us/library/zxk0tw93(VS.80).aspx
      

  2.   

    winapi是个宏,实际上表示这个函数是一个__stdcall的函数。
    关于std_call或cdecl_call,是编译时候的函数约定,主要决定函数调用后的栈还原是由调用者来做,还是函数自身来做,具体可以在网上查阅更详尽的资料。
    简单来说,windows的系统api都是WINAPI,你自己写线程函数一般也要是这个约定,这是windows规定的。
      

  3.   

    LS几位正解。
    我做个补充,除了winapi之外,APIENTRY、FAR PASCAL甚至于CALL BACK都被#define成了__stdcall
    除了__stdcall,还有__cdecl .etc不同的调用约定表示不同的平栈方式
    建议LZ安装Visual Assist X,这个东西很强大,能够快速的定位到被define\typedef的源内容~
    而且还有其他很强大的功能~