$extendedSyntax
Deutsch · English
The global compiler directive {$extendedSyntax on} turns on additional syntax. The FPC has this by default on. The short notation is {$X+}/{$X‑}.
Affected syntax
- Functions can be called as if they were procedures. The function result is discarded. This is potentially harmful if, for example, the function allocated new memory space and returned a pointer to it. Nonetheless, managed data types are insusceptible to leakage. Implementing a management operator can turn any
recordinto a managed data type. - Integer arithmetic expressions are allowed on pointers. The directive {$pointerMath} had to be on for that during the respective pointer type’s definition.
- Pointers become ordered and can be compared using <,>,
<=and>=. Typed pointers have to correspond to each other. The = and <> comparisons work regardless of the{$extendedSyntax}state.
Notes
- If you have
{$extendedSyntax off}, you can still do pointer arithmetic with routines from other units if they have been compiled with{$extendedSyntax on}, for example inc and dec:
{$extendedSyntax off} var
p: pChar;
begin
p := nil;
inc(p, 42); { no problem }
end.
Similarly, unusual comparison operations may be accessible with foreign routines.
- Built-in functions can never be called as if they were procedures
{$extendedSyntax on} begin
pi; { discardFunctionResultDemo.pas(4,4) Error: Illegal expression }
end.
even though a custom pi function doing exactly the same would be acceptable.
- Although with
{$extendedSyntax on}pointers become ordered, they do not become ordinal data types; the standard functions ord,succandpredare still not applicable on pointers.
Comparative remarks
- Standard Pascal does not define any of those “extensions”.
See also
From the Free Pascal wiki, page "$extendedSyntax", as it stood on 2022-10-23 after a change by Bart, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
