[fpc-devel] C-block reference syntax (blocker for 3.2)

Michael Van Canneyt michael at freepascal.org
Thu Dec 12 08:51:03 CET 2019



On Wed, 11 Dec 2019, Ryan Joseph via fpc-devel wrote:

>
>
>> On Dec 11, 2019, at 4:16 PM, Michael Van Canneyt <michael at freepascal.org> wrote:
>> 
>> It does gain something: it tells you it is NOT a varargs, but an array of
>> const, which is a different beast altogether.
>
> But it's a syntax equivalent for "a variable amount of arguments", i.e. varargs. ;) I guess others don't see it this way however.

In difference with varargs, Array of const can appear anywhere in the list of
arguments: for the compiler, it really is 1 argument.

See e.g. Exception.CreateFmtHelp:

https://docs.freepascal.org/docs-html/current/rtl/sysutils/exception.createfmthelp.html

In private code I use this a lot, I even have

Somecall(fmt : String; args : Array of Const; anOptionalArg : TType = SomeDefault);

for such cases, if you were to drop the [], the compiler has no way to know what to do in general.

Michael.


More information about the fpc-devel mailing list