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