_cdecl和_stdcall的区别

 1、_cdecl和_stdcall的区别:

     1) _cdecl调用按照从右往左的顺序将参数入站,由调用者把参数弹出栈

            _stdcall调用按照从右往左的顺序将参数入站 ,由被调用者把参数弹出栈

     2)_stdcall 和_cdecl对函数名最终生成符号的方式不同:_stdcall调用约定在输出函数名前加下划线,后面为“@”和参数的字节数,形如“_funname@number;而_cdecl调用约定在仅输出函数名前加下划线,形如_funname.

注:如果通过VC++编写的DLL欲被其他语言编写的程序调用,应将函数的调用方式声明为__stdcall方式,WINAPI都采用这种方式,而C/C++缺省的调用方式却为__cdecl。若采用C编译方式(在C++中需将函数声明为extern "C")

 

另外可以参考资料:http://www.cnblogs.com/Winston/archive/2008/09/11/1289391.html

http://www.cppblog.com/kenny/archive/2011/04/19/144539.html

你可能感兴趣的:(c/c++笔试面试)