[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