On Sun, 29 Aug 2010, Marco van de Voort wrote:

In our previous episode, Michael Van Canneyt said:
Because if it is something we decided, it simply means that we should change
it's meaning to be identical to mwpascal: cdecl calling convention, and const
structs passed by reference. If I'm right, 'stdcall' currently
has no meaning on non-windows platforms other than the one we put on it.

mwpascal is still per declaration and Delphi incompatible. And keep in mind
that any implementation of a IUnknown must repeat any modifiers in the
original source (including const ref and calling conventions) regardless of
what option is chosen.

I meant people write 'stdcall', but the same semantics as 'mwpascal' are used by the compiler, since stdcall is a windows calling convention construct, invented only by Microsoft for backwards compatibility with early versions of Windows.
(to my knowledge, that is)

_if_ stdcall is not used by any compiler on non-windows, then we can assign whatever meaning to it that we please, which would in this case be the same meaning as mwpascal.

But I still fail to see why Joost needs all this.

His change would mean that the GCC compiler does things which we currently know nothing about, namely it pushes const parameters by reference in some cases. In casu: What is the C declaration for the QueryInterface call ?

It is defined in FPC as:
function QueryInterface(const iid : tguid;out obj) : longint;stdcall;

But what is QueryInterface as defined in C ? Does C have a tguid type ?

These questions should be answered prior to changing anything in the compiler.

Michael.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to