On Thu, 26 Aug 2021, LacaK via fpc-pascal wrote:

Hello,
looking at https://www.freepascal.org/docs-html/prog/progsu126.html#x139-1400002.4.1

There is mentioned "OPTION(opt)" with comment: "evaluates to TRUE if a compiler option is set (mode MacPas only). It is equivalent to the {$IFOPT } directive."

1. What is equivalent usage for {$IFOPT R+}?
{$IF OPTION(R)} ?

Yes.


2. What means comment "(mode MacPas only)"?

That you can use it only in macpas mode. In other modes you must use {$IFOPT}

It will does not work for example for ObjPas mode? In my case Compilation fails ... (with single {$IF OPTION(R)} ) -> Error: Compile time expression: Wanted Boolean but got AnsiString at IF or ELSEIF

It only works for mode macpas.

Can this OPTION be enabled for all modes?

Technically yes. Whether that's a good idea, I don't know.


3. Is there way how to do OR with {$IFOPT}?
if I use {$IF OPTION(R) OR OPTION(D)}  I get: "Error: Compile time expression: Wanted Boolean but got AnsiString at IF or ELSEIF" ...
So is there way how to do it with {$IFOPT R+D+}?

No.

You need to do
{$IFOPT D+}
{$DEFINE DOMYTHING
{$ENDIF}
{$IFOPT R+}
{$DEFINE DOMYTHING
{$ENDIF}

{$IFDEF DOMYTHING}
...
{$ENDIF}

Which I think is the wiser choice in each case, since it avoids repetition
and allows you to give a more meaningful name to the 'option'...

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to