> I would like to do some very basic boolean operations within compiler > directives. $IF does not seem to work reliably. See below: > > C:\fpc\test>fpc directive_test -Sm > Free Pascal Compiler version 1.0.10 [2003/06/27] for i386 > [...] > User defined: ========================= > User defined: $define x:=17 > User defined: !!! (x=5) = TRUE even though i set x:=17 > User defined: . (x>50) = false (good, x=17) > User defined: !!! (x<50) = FALSE even though i set x:=17 > User defined: !!! ($if 1 AND 0) = TRUE > User defined: ========================= > User defined: $define zero:=0 > User defined: !!! ($if zero) = TRUE > User defined: !!! ($if 0) = TRUE > User defined: and now the exact same test again... > User defined: . ($if 0) = false > User defined: ========================= > User defined: $define apples > User defined: !!! ($ifdef oranges or apples) = FALSE :-( > User defined: ========================= > Linking directive_test.exe > 68 Lines compiled, 1.2 sec > > I know boolean operators are not supported for $ifdef, but it would sure > be nice.
This is even not supported in C. $ifdef is just a shortcut for $if defined(<name>). You must us '$if defined(oranges) or defined(apples)'. The marcos work correct in the current development version 1.9.3: Free Pascal Compiler version 1.9.3 [2004/02/04] for i386 Copyright (c) 1993-2004 by Florian Klaempfl Target OS: Win32 for i386 Compiling p.pp User defined: ========================= User defined: $define x:=17 User defined: . (x=5) = false (good, x=17) User defined: . (x>50) = false (good, x=17) User defined: . (x<50) = true (good, x=17) User defined: . ($if 1 AND 0) = false User defined: ========================= User defined: $define zero:=0 User defined: . zero returned false User defined: . ($if 0) = false User defined: and now the exact same test again... User defined: . ($if 0) = false User defined: ========================= User defined: $define apples User defined: !!! ($ifdef oranges or apples) = FALSE :-( User defined: ========================= Linking p.exe 69 Lines compiled, 0.2 sec _______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal