Wenn man schon legacyifend nutzt, dann muss das auch überall getan werden, einige stellen innerhalb des fehlerhaften Teils taten dies nicht (scheinbar kann FPC da auch inzwischen mit nem endif umgehen). Außerdem scheint es den Delphi Compiler hier ein bisschen aus den Socken zu hauen, dass man direkt FPC_FULLVERSION checkt, ein zusätzliches declared behebt das.
Ob das jetzt unter FPC kompiliert? Kein Plan, war nicht meine Aufgabe
Delphi-Quellcode:
//------------------------------------------------------------------------------
// FPC v2.x support (Experimental)
//------------------------------------------------------------------------------
{$IFDEF FPC}
{$UNDEF DELPHIORBCB}
// fpc supports assembler
//{$DEFINE PUREPASCAL}
{$DEFINE NATIVEINT_UNDEFINED}
{$IF declared(FPC_FULLVERSION) and (FPC_FULLVERSION >= 30300)}
{$DEFINE HAVE_LAMBDAS}
{$IFEND}
// use compatibility mode
{$MODE DELPHI}
{$IFDEF HAVE_LAMBDAS}
{$modeswitch functionreferences}
{$modeswitch anonymousfunctions}
{$ENDIF}
{$DEFINE HAVE_ASSIGN_ARRAY}
// defines for Mac OS X
{$IFDEF DARWIN}
{$DEFINE MACOS}
{$DEFINE ALIGN_STACK}
{$ENDIF}
// define delphi-style CPU-width
{$ifdef CPU64}
{$define CPU64BITS}
{$else} {$if defined(CPU32) }
{$define CPU32BITS}
{$ifend}{$endif}
{$ASMMODE intel}
{$ELSE}
// assume delphi have "reference to" feature
{$define HAVE_LAMBDAS}
{$ENDIF FPC}