[Resolved] Fehler beim Compilieren: Conditional {$ELSEIF DEFINED()}

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

[Resolved] Fehler beim Compilieren: Conditional {$ELSEIF DEFINED()}

Beitrag von Nimral »

Das openssl package compiliert nicht (Windows 10 x64/Lazarus 2.0.12). Um das Problem einzugrenzen, habe ich die folgende Source zusammengeschnipselt:

Code: Alles auswählen

unit Unit1;

{$mode objfpc}{$H+}

interface

{$IFDEF WIN64}
// ...
{$ELSEIF DEFINED(WINDOWS)}
// ...
{$ENDIF}

implementation

{$R *.lfm}

end.
Das Problem: unit1.pas(9,9) Error: ENDIF without IF(N)DEF

in der Zeile {$ELSEIF DEFINED(WINDOWS)}

Das DEFINED scheint nicht zu funktionieren, obwohl es m.E. sollte. Kann das jemand verifizieren? Habe ich was übersehen?

Danke, Armin
Zuletzt geändert von Nimral am Fr 23. Apr 2021, 10:40, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Fehler beim Compilieren: Conditional {$ELSEIF DEFINED()}

Beitrag von theo »

Wahrscheinlich so:

Code: Alles auswählen

{$IF DEFINED(WIN64)}
// ...
{$ELSEIF DEFINED(WINDOWS)}
// ...
{$ENDIF}  
https://wiki.freepascal.org/Conditional ... _.24elseif

Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

Re: Fehler beim Compilieren: Conditional {$ELSEIF DEFINED()}

Beitrag von Nimral »

Interessanter Gedanke. Muss ich gleich mal probieren.

Das Problem stammt übrigens original von hier:

https://github.com/graemeg/freepascal/b ... penssl.pas

Zeile 93.

und $IF ist in der Doku die Du verlinkt hast gleich überhaupt nicht beschrieben, es fällt dann allerdings in einem Beispiel vom Himmel. Wenn ich annehme dass openssl.pas mal compiliert hat ... hat sich da neulich was an FPC geändert?

Eigentlich wäre doch {$IFDEF WINDOWS} äquivalent zu {$IF DEFINED(WINDOWS)}, wird aber vom Compiler nicht so betrachtet, und ist auch nicht dokumentiert.

HG Armin.

Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

Re: Fehler beim Compilieren: Conditional {$ELSEIF DEFINED()}

Beitrag von Nimral »

Mit Deiner Änderung klappt es, ich kann das OpenSSL Package kompilieren.

Wie geht man mit sowas um? Ist das nun ein Fehler in FPC, oder in der Doku? Meldet man das Problem an die FPC Entwickler, oder an den Author des OpenSSL Packages?

Armin.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Fehler beim Compilieren: Conditional {$ELSEIF DEFINED()}

Beitrag von Socke »

Nimral hat geschrieben:
Fr 23. Apr 2021, 09:15
Wie geht man mit sowas um? Ist das nun ein Fehler in FPC, oder in der Doku? Meldet man das Problem an die FPC Entwickler, oder an den Author des OpenSSL Packages?
Es gehört auf jeden Fall in den Free Pascal Bug Tracker. Wenn es in einer älteren FPC-Version funktioniert hat, ist es ein Regressionsfehler.
Möglicherweise ist es aber ein einfacher Fehler in der Unit vom September 2020. Da die Unit auch mit Free Pascal ausgeliefert wird, meldest du das am besten auch im Bug Tracker (siehe "Category" beim Eröffnen des Bugs).

Edit: Protokoll im Link vergessen und ergänzt.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

Re: Fehler beim Compilieren: Conditional {$ELSEIF DEFINED()}

Beitrag von Nimral »

Toter Link?

Der da scheint zu gehen:

https://bugs.freepascal.org

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: [Resolved] Fehler beim Compilieren: Conditional {$ELSEIF DEFINED()}

Beitrag von Winni »

Hi!

Sockes Bug-Tracker-Link ist tot.

Der geht:

https://bugs.freepascal.org/main_page.php

Winni

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: [Resolved] Fehler beim Compilieren: Conditional {$ELSEIF DEFINED()}

Beitrag von theo »

@Winni, Nimral, Socke
Die Adresse stimmt eigentlich, aber wenn kein "http(s)://" vorne dran steht, wird es als Link innerhalb des Forums angesehen.

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Fehler beim Compilieren: Conditional {$ELSEIF DEFINED()}

Beitrag von PascalDragon »

Nimral hat geschrieben:
Fr 23. Apr 2021, 09:08
und $IF ist in der Doku die Du verlinkt hast gleich überhaupt nicht beschrieben, es fällt dann allerdings in einem Beispiel vom Himmel. Wenn ich annehme dass openssl.pas mal compiliert hat ... hat sich da neulich was an FPC geändert?
Das ist ja auch nicht die Doku, sondern „nur” das Wiki. Die Doku ist hier.
Nimral hat geschrieben:
Fr 23. Apr 2021, 09:08
Eigentlich wäre doch {$IFDEF WINDOWS} äquivalent zu {$IF DEFINED(WINDOWS)}, wird aber vom Compiler nicht so betrachtet, und ist auch nicht dokumentiert.
Der Unterschied ist, dass ein $IFDEF ein $ELSE braucht (falls so ein Zweig nötig ist), während nur eben $IF ein $ELSEIF zulässt (zusätzlich zu $ELSE).
FPC Compiler Entwickler

Antworten