[fpc-devel]defines do not apply to units

Marco van de Voort marcov at stack.nl
Thu Aug 8 02:32:03 CEST 2002

> I am new to FreePascal, so please be tolerant
> if this is a feature, but it looks like a bug to me.

Point taken,
> The unexpected behavior is that {$Define Sym}
> statements given in a main program do not stay
> defined for a unit compiled in the same run.

This is normal behaviour, contrary to languages that don't have any scoping

The classic workarounds are :

> It is not difficult to work around (include the
> defines file within each unit), but that seems a bit ugly.

1. Indeed, check.

2. Make sure your makefile passes the define to each unit.

Seriously, this is for a reason. With the FPC (and any other Wirthian
(pascal-like)) language with a unit/module system, you can't predict
the exact way the different files/units are compiled, so therefore
defines are restricted to that compilationunit. 

This is the downside of an actual generally postive feature ( the compile
figures the right compilation order, and is generally right about it), with
the above 2 workarounds as an alternative.

More information about the fpc-devel mailing list