JP> I finally decided to make an attmept at compiling fpc from the CVS sources.
JP> (fixes branch, 2003-04-01)


JP> Everything went smooth, except for one small problem:

JP> fpgtk.pp(3032,57) Error: Illegal parameter list

JP> The code in question is this:

JP>   procedure TFPgtkObject.SignalEmit (aName:string; Args:array of const);
JP>   begin
JP>     gtk_signal_emit_by_name (TheGtkObject, pgchar(aName), Args);
JP>   end;

JP> Apparently the compiler is getting confused about exactly what
JP> a "const" is, when Args is passed from a regular function to a
JP> cdecl function.

JP> At any rate, changing the declaration to this:

JP> procedure TFPgtkObject.SignalEmit (aName:string; Args:array of TVarRec);

JP> - seems to solve (or at least hide) the problem.

Did you test also {$Mode Delphi}?

That will not solve the problem. The problem is that there is no knowledge how to push an array with X elements of a certain type to a C function. The compiler does not know anything at compile time and can't generate the correct code for it. Having a cdecl function with array of const has even less knowledge how much arguments are pushed since there is no length parameter at all.


Note that in C it is also not possible to call printf(format,...) with the arguments passed to function with variable arguments like trace_msg(format,...)




Peter


_______________________________________________
fpc-devel maillist  -  [EMAIL PROTECTED]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to