Überprüfen des Betriebssystems

Liebes Forum!

Mit Hilfe des Präprozessors ist es ja sehr einfach möglich portablen Code zu erzeugen. Ich möchte jetzt aber ein Programm schreiben, dass sowohl auf Linux, als auch auf Windows läuft ohne zwei verschiedene Versionen compilieren zu müssen. Quasi platformunabhängig.

Dazu habe ich folgende Fragen:

Wie kann ich beim Start des Programmes herausfinden, auf welchem System das Programm gestartet wurde? Ich möchte dan einfach einen bool setzten ob ich auf windows oder linux bin und das programm dan entsprechend anpassen.

Ist der Header winsock2.h und die Biblothek ws2_32.lib auch unter Linux einsetzbar, oder muss man da auf anderes zurückgreifen? Wenn ja, welche alternativen gibt es?

Vielen Dank für eure Antworten,
mfg dixxi

Hallo,

Ich möchte jetzt aber ein Programm
schreiben, dass sowohl auf Linux, als auch auf Windows läuft
ohne zwei verschiedene Versionen compilieren zu müssen. Quasi
platformunabhängig.

Da muss ich dich enttäuschen: Das geht nicht so (zumindest habe ich noch nie davon gehört). Linux und Windows benutzen unterschiedliche Binärformate für ihre ausführbare Dateien, daher geht das nicht.

Wenn du so etwas willst solltest du auf interpretierte Sprachen zurückgreifen (perl z.B) oder solche, die auf einer VM laufen (Java).

Grüße,
Moritz

Hallo dixxi,

Wie kann ich beim Start des Programmes herausfinden, auf
welchem System das Programm gestartet wurde?

Das ist schon dein Problem. Wie schon gesagt, das Programm läuft nur im einen Fall, je nachdem welches Binärformat du erstellt hast.

Die einzige Möglichkeit ist, dein Programm auf dem jeweils anderen BS unter einer Emulation laufen zu lassen.

MfG Peter(TOO)

Hi,
da du auf anderen OSs die App auch neu kompilieren musst, kannst du doch einfach so arbeiten:

bool linux = false;
#ifdef _linux_
linux = true
#endif

mfg, Hans