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


_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to