[fpc-devel]fpgtk problem

Peter Vreman peter at freepascal.org
Wed Apr 2 17:13:52 CEST 2003


>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




More information about the fpc-devel mailing list