Programme durch #if defined für Win und Linux schreiben.

MeeriMomo

Mitglied
Ich möchte meinen Quelltext so schreiben, dass er auf Windows und auf Linux ohne änderung kompiliert werden kann.
Ich wollte das ganze mit #if defined machen.

Code:
#if defined linux || __linux || __linux__ || __GNU__
// Linux spezifisches
#end if

#if defined __WIN32__ || _MSC_VER
 // Windows spezifisches
#endif

Geht so wie ich das habe?
 
Wenn du plattformunabhängig programmieren willst, verwende doch das GNU C++. Die Oberfläche kannst du dann mit wxWidgets oder etwas ähnlichem realisieren.
 
Danke für die Antwort.

Geht das denn so wie ich das geschrieben habe. hier mit #if #else

C:
#if defined WIN32  ||  __WIN32__ || _MSC_VER

// Windows

#elif defined linux || __linux  || __linux__ || __GNU__

// Linux

#else
    #error "Unsupported Operating System"
#endif
 
Danke für die Antwort.

Geht das denn so wie ich das geschrieben habe. hier mit #if #else
Nein, das geht so nicht. Warum probierst du es denn nicht wenigstens mal aus?

Schau nochmal in die Tabelle die ich verlinkt habe.

Und dann mußt du prüfen ob die einzelnen Werte defined sind und nicht nur ob der erste definiert ist:
C:
#if defined(_WIN32)
...
#elif defined(linux) || defined(__linux)
...
#else
#  error "OS not supported."
#endif
Das reicht nach meiner Erfahrung völlig aus. Den Microsoft Compiler zu prüfen ist in dem Schritt eigentlich unnötig. Bestimmte Compiler sollte man dann extra behandeln.

Es ist m.E. eine gute Idee die Cygwin Plattform gesondert zu behandeln, da man wohl meist eine max. Unix-ähnliche Version des Programmes unter Windows komplieren will.

Gruß
 
Zurück