Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2021-08

function const default argument

4 messages · 4 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Santiago A.

Hello:

Freepascal 3.2.0. Windows 7-32bits

I have these functions:

function F(const x:extended; const delta:extended=1E-8):extended;
function G(const x:extended; const delta:extended=1E-8):extended;

and I want to parametrize like this:

const
  DefaultDelta:extended = 1E-8;
function F(const x:extended; const delta:extended=DefaultDelta):extended;
function G(const x:extended; const delta:extended=DefaultDelta):extended;

But I get "Illegal expression" in the header function declaration. Const parameters don't accept const expressions?

Saludos Santiago A.

Reply by email

Ondrej Pokorny
to Santiago A.
Santiago A. wrote 7 lines
const  DefaultDelta:extended = 1E-8; function F(const x:extended; const delta:extended=DefaultDelta):extended; function G(const x:extended; const delta:extended=DefaultDelta):extended; But I get "Illegal expression" in the header function declaration. Const parameters don't accept const expressions?

You need:

const
  DefaultDelta = 1E-8;
function F(const x:extended; const delta:extended=DefaultDelta):extended;

Ondrej

Reply by email

Santi
to Ondrej Pokorny
Ondrej Pokorny wrote 14 lines
On 26.08.2021 09:40, Santiago A. via fpc-pascal wrote: > const >  DefaultDelta:extended = 1E-8; > function F(const x:extended; const delta:extended=DefaultDelta):extended; > function G(const x:extended; const delta:extended=DefaultDelta):extended; > > But I get "Illegal expression" in the header function declaration. > Const parameters don't accept const expressions? You need: const  DefaultDelta = 1E-8;

Thanks, it works fine.

But I can't see why specifying the type doesn't work;
Show quoted text 9 lines
function F(const x:extended; const delta:extended=DefaultDelta):extended; Ondrej _______________________________________________ fpc-pascal maillist - https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Saludos Santi

Reply by email

Michael Van Canneyt
to Santi
Santi wrote 19 lines
El 26/08/2021 a las 10:00, Ondrej Pokorny via fpc-pascal escribió: > On 26.08.2021 09:40, Santiago A. via fpc-pascal wrote: >> const >>  DefaultDelta:extended = 1E-8; >> function F(const x:extended; const delta:extended=DefaultDelta):extended; >> function G(const x:extended; const delta:extended=DefaultDelta):extended; >> >> But I get "Illegal expression" in the header function declaration. >> Const parameters don't accept const expressions? > > You need: > > const >  DefaultDelta = 1E-8; > Thanks, it works fine. But I can't see why specifying the type doesn't work;

Because a typed constant behaves more like a variable then like a constant. A leftover from Turbo Pascal, which used this construct for initialized variables.

const
   DefaultDelta = Extended(1E-8);

is a real typed constant.

Michael.

Reply by email