Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Delphi und FPC compiler problem

  Alt 15. Aug 2022, 13:39
Nee, wozu? {$IF Defined(FPC_VERSION)} fängt ja ab, falls es das nicht gibt. (in einem uralten FPC)
Und bereits {$IFDEF FPC} passt auf, dass es im Delphi garnicht ausgeführt wird.


Klingt aber fast so, als sei FPC_VERSION bei dir keine "echte" Konstante, aber wenn sie vom Compilier kommt, dann sollte es doch eigentlich passen.
also z.B. const FPC_VERSION: Integer = 123;
Außerdem wird deine Prüfung garnicht funktionieren, da FPC_VERSION ein DECLARE und kein DEFINE ist uns somit wird IFDEF/IFNDEF dennoch anschlagen, selbst wenn es existiert.
Und auch das {$IF Defined(FPC_VERSION)} entspricht dem {$IFDEF FPC_VERSION} .

Delphi-Quellcode:
{$IFNDEF FPC}
  const FPC_VERSION = 0;
{$IFEND}

oder besser das, was man eigentlich machen will (wenn nicht existiert, dann erstellen)
{$IF not Declared(FPC_VERSION)}
  const FPC_VERSION = 0;
{$IFEND}
also
Delphi-Quellcode:
{$IFDEF FPC}
  {$IF Declared(FPC_VERSION)}  <<<<<<<<<<<<<<<<<<<<<< Declared, nicht Defined
    {$IF FPC_VERSION >= 3}
      {$DEFINE UNICODE}
    {$IFEND FPC_VERSION}
  {$IFEND FPC_VERSION}
{$ENDIF FPC}

{$IF Defined(FPC) and Declared(FPC_VERSION) and (FPC_VERSION >= 3)}
  {$DEFINE UNICODE}
{$IFEND}

und da FPC_VERSION eh immer nur im FPC existiert (außer jemand macht sowas Böses, wie der Rolf), wäre der erste Teil implizit im Zweiten mit enthalten
{$IF Declared(FPC_VERSION) and (FPC_VERSION >= 3)}
  {$DEFINE UNICODE}
{$IFEND}
ConditionalExpressions {$IF} sollten ja inzwischen alle Compiler seit Jahrzehnten können.
$2B or not $2B

Geändert von himitsu (15. Aug 2022 um 13:52 Uhr)
  Mit Zitat antworten Zitat