我建了一个空的工程,谢了一个
int WinMain(....)
编译的时候提示我必须指定__stdcall.奇怪,我记得stdcall是callee清空堆栈的方式,更节省空间,所以是默认的方式。
难道WinMain默认被编译成了cdecl方式么?高人指点!

解决方案 »

  1.   

    我也不知道 百度了一下 :
    VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。 2、C调用约定(即用__cdecl关键字说明)按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调用者来维护的(正因为如此,实现可变参数的函数只能使用该调用约定)。另外,在函数名修饰约定方面也有所不同。 _cdecl是C和C++程序的缺省调用方式。每一个调用...
      

  2.   

    默认是cdecl如果是vc6的话,可以看看工程的设置,Project --> Settings菜单,窗口中选C++那个Tab页,然后在Category下拉框中选Code Generation, 就能看到有个Call Convention
      

  3.   

    void __stdcall CMyClass::mymethod() { return; } 直接添加个__stdcall就好, 主要是调用堆栈上谁负责回收的问题
      

  4.   

    楼上的答案都是一致的,VC默认的就是 cdecl