[erklärt] In LPR(-Windows) steht UNIX anstatt Windows?

Antworten
Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

[erklärt] In LPR(-Windows) steht UNIX anstatt Windows?

Beitrag von Erwin »

Hoffe es gehört hierher.

In der Projekt-Datei lpr gibt es die Zeile mit ifdef. Genau gesagt steht da bei mir:

Code: Alles auswählen

 
{$IFDEF UNIX} {$IFDEF UseCThreads}
cthreads,
{$ENDIF} {$ENDIF}
 

Mich irritiert das mit den UNIX. Es klappt zwar wunderbar, aber ich dachte, ich hätte mal wo gelesen, dass es Windows oder dergleichen dort stehen müsste? Was aber scheinbar doch nicht der Fall ist? Kann mir bitte Jemand schreiben, was es damit genau auf sich hat?

Danke.
Zuletzt geändert von Erwin am So 31. Jul 2016, 19:21, insgesamt 1-mal geändert.
Lazarus 2.2.0 / FP 3.2.4

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: In LPR(-Windows) steht UNIX anstatt Windows?

Beitrag von wp_xyz »

Das bedeutet: "Falls unter Unix übersetzt wird und falls das Symbol "UseCThreadsdefiniert" ist, wird die Unit cthreads dazugebunden". Unter Windows wird das natürlich ignoriert - eben weil nicht unter Unix übersetzt wird. Man braucht cthreads unter Unix/Linux, wenn in dem Programm Threads verwendet werden. Wenn du nie unter Unix/Linux arbeiten wirst, bzw. wenn dein Programm nie Threads verwenden wird, kannst du die Direktive auch löschen, falls es dich stört.

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: In LPR(-Windows) steht UNIX anstatt Windows?

Beitrag von Erwin »

Threads? Hm... sagt mir nichts, aber mal sehen, was sich da finden lässt.

Falls unter Linux übersetzt wird? Es ist also vor allem zusätzlich? ifdef ... 'if' (= das bekannte 'wenn') ... also wenn es Unix ist, dann soll es ... . War mir gar nicht so aufgefallen, weil ifdef ein Wort ist. Also anders gesagt, Windows kann ohne weiteres diese Threads verwenden. Während Linux bei der Verwendung von diesen Threads dann cthreads braucht? Und ifdef/endif und cthreads sorgt dann dafür.
Durch den Befehl kann man dann also was Threads betrifft, den Code unter beiden BS dann ohne extra Änderung (wegen den Threads) kompilieren.
Wäre also teils damit vergleichbar, als wenn man zum Beispiel unbedingt will, dass das Programm in die Registriy geschrieben wird, dann müsste so was wie 'ifdef Windows "then schreibe in die Registry" endif' machen, weil Linux/Unix wiederum ja keine vergleichbare Registry hat, und sonst dort nur Probleme gäbe.
Lazarus 2.2.0 / FP 3.2.4

Antworten