[fpc-pascal] Local compiler options

Adriaan van Os fpc at microbizz.nl
Wed Dec 5 10:23:01 CET 2007


Suppose, I want to use a compiler directive locally and reset it after that.

GPC has {$local ...} and {$endlocal}. FPC in mac-mode has {$push} and {$pop}, e.g.

{$push}
   i:= longword( -1)
{$pop}

I didn't find an equivalent for FPC in delphi or objfpc mode. All I can think of is

{$ifopt R+}
{$define local_RangeCheck}
{$endif}
{$R-}
   i:= longword( -1)
{$ifdef local_RangeCheck}
{R+}
{$endif}

This is a bit ugly and not fully reliable, e.g. try

{$mode objfpc}
program TestLocal;
var i: longint;
begin
{$R+}
{$ifopt R+}
{$define local_RangeCheck}
{$R-}
{$endif}
   i:= longword( -1);
{$ifdef local_RangeCheck}
{$R+}
{$endif}
end.

Any comments ?

Of course, longword( -1) using constants is just one example of the use of local compiler 
directives. The issue at hand is broader than that.

Regards,

Adriaan van Os





More information about the fpc-pascal mailing list