Stdcall v. ccall on Windows FFI

Simon Marlow marlowsd at gmail.com
Fri Jun 24 13:45:52 CEST 2011


On 22/06/2011 01:28, Mauricio CA wrote:
> Hi,
>
> Haskell FFI addendum, when talking about calling conventions, says
> that[1]:
>
>     ccall
>         Calling convention of the standard C compiler on a system
>     stdcall
>         Calling convention of the Win32 API (matches Pascal conventions)
>
> I wonder: what would correspond to such "standard C compiler" in
> Windows? Is it, say, Visual Studio? And which convention does it use
> by default?  Is it safe to assume that whatever is contained in a C file
> compiled inside a Cabal package in Windows will have a calling convention
> matched by 'ccall'?

I'd say that ccall is the calling convention that a C compiler on that 
platform will use unless you specify otherwise.  For example, on Windows 
you always have to specify __stdcall if you want it - the Win32 header 
files have it all over the place, and you can't call Win32 functions by 
defining their prototypes yourself unless you add __stdcall.

So the answer to your last question is "yes"

Cheers,
	Simon



More information about the Libraries mailing list