>Is there a good reason for windows libraries to not use C convention?
>Or is it just an accident of Microsoft history?
Yes, the code is substantially smaller and a bit faster on Intel processors.
The StdCall convention lets the called routine remove the parameters
(which is part of the RET instruction on a Intel processor, and thus
essentially free) rather than making the caller do it (which costs time
and instructions). C compilers have to use the latter convention because
the language allows variable parameter lists.
>Although the Stdcall convention is not in the RM, is it available
>with the same name with most Ada compilers on Windows?
When we started Claw, we expected this to be a problem. So we planned
on a preprocessor to insert the convention name. Eventually we found
out that the only compiler not using the convention name StdCall was
Janus/Ada (our compiler). [For compatibility with our 16-bit Windows
compiler, we had called the convention "Windows"]. So we aliased
"Windows" and "StdCall", and Claw never got a preprocessor.
So, it is pretty safe to use "StdCall" on Windows implementations; one
that came out now without it would get run out of town pretty quick...
Director of Technical Operations
R.R. Software, Inc.