I am new to FreePascal, so please be tolerant
if this is a feature, but it looks like a bug to me.
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.
Below is an example involving 3 very short files
to illustrate the problem.
When I compile and run the program TestDefs.Pas
with FreePascal v 1.0.6 on Win32, I expect the writelns to say that the symbols are defined. Instead, they say that the symbols are undefined.
***Main program file: TestDefs.pas:
{$I TestDefs.Inc}
Program MyProg;
Uses TestUnit;
Begin
LargeMemCheck;
UseCRTCheck;
ProcPtrsCheck;
End.
***Include file with defines: TestDefs.Inc:
{$Define FPC}
{ Conditional defines for FreePascal (version 1.0.6): }
{$IfDef FPC}
{$Define LargeMem}
{$Define UseCRT}
{$Define ProcPtrs}
{$EndIf}
***Unit file: TestUnit.Pas:
Unit TestUnit;
Interface
Procedure LargeMemCheck;
Procedure UseCRTCheck;
Procedure ProcPtrsCheck;
Implementation
Procedure LargeMemCheck;
Begin
{$IfDef LargeMem}
Writeln('LargeMem is defined.');
{$Else}
Writeln('LargeMem is undefined.');
{$EndIf}
End;
Procedure UseCRTCheck;
Begin
{$IfDef UseCRT}
Writeln('UseCRT is defined.');
{$Else}
Writeln('UseCRT is undefined.');
{$EndIf}
End;
Procedure ProcPtrsCheck;
Begin
{$IfDef ProcPtrs}
Writeln('ProcPtrs is defined.');
{$Else}
Writeln('ProcPtrs is undefined.');
{$EndIf}
End;
End.It is not difficult to work around (include the
defines file within each unit), but that seems a bit ugly.
Jeff Miller
