Re: c_proc/func() bug ?
- Posted by "Bernard W. Ryan" <xotron at bluefrognet.net> Nov 10, 2003
- 627 views
Mic: This is from MSDN: Microsoft Specific =97> ----------------------------------------------------------------------- The __stdcall calling convention is used to call Win32 API functions. The callee cleans the stack, so the compiler makes vararg functions __cdecl. Functions that use this calling convention require a function prototype. The following list shows the implementation of this calling convention. Element Implementation=20 Argument-passing order Right to left.=20 Argument-passing convention By value, unless a pointer or reference type is= passed.=20 Stack-maintenance responsibility Called function pops its own arguments from the stack.=20 Name-decoration convention An underscore (_) is prefixed to the name. The name is followed by the at sign (@) followed by the number of bytes (in decimal) in the argument list. Therefore, the function declared as int func( int a, double b ) is decorated as follows: _func@12=20 Case-translation convention None=20 ----------------------------------------------------------------------- This is the default calling convention for C and C++ programs. Because the stack is cleaned up by the caller, it can do vararg functions. The __cdecl calling convention creates larger executables than __stdcall, because it requires each function call to include stack cleanup code. The following list shows the implementation of this calling convention. Element Implementation=20 Argument-passing order Right to left=20 Stack-maintenance responsibility Calling function pops the arguments from the stack=20 Name-decoration convention Underscore character (_) is prefixed to names= =20 Case-translation convention No case translation performed=20 Bernie