plattformunabhängig mittels #define übersetzen?
-
hallo,
habe hier ein programm unter linux, das spaeter auch unter windows laufen muss. da ich intensiv mit sockets, signalen usw arbeite, scheitert natuerlich eine direkte uebersetzung unter vc.
ich wollte nun mit #define arbeiten. der compiler muss erkennen, ob linux oder windows. eine globale define anweisung in einer *.h datei zb #define LINUX ist uncool, da ich bei der windows variante diese loeschen muesste.
welche sinnvollen moeglichkeiten gibt es?
-
Dein configure Skript setzt einfach die defines.
Ansonsten http://www.c-plusplus.net/forum/viewtopic.php?t=91388
-
Wenn du Visual C++ verwendest wird standardmäßig WIN32 definiert, was dein Compiler unter Linux nicht macht und daher erkennt, dass es sich hier um die Linux Version handelt.
btw würde ich dir raten für Sockets ne Lib zu verwenden die diese Unterscheidung bereits für dich erledigt, z.B. ACE
-
SirLant schrieb:
Wenn du Visual C++ verwendest wird standardmäßig WIN32 definiert
Nicht ganz. Der Compiler definiert _WIN32 auf einer 32 Bit Plattform, _WIN64 auf einer 64 Bit Plattform.
-
Solche defines sind SCHEISSE! Das muss ich jetzt mal sagen. Damit muss ich mich immer auf der Arbeit rumschlagen. Die totale Katastrophe!
Am besten man macht es wie HumeSikkins in dem von Kingruedi geposteten link geschrieben hat. Über den Makefile bzw. die IDE.
-
erstmal danke fuer eure antworten.
den link oben habe ich gelesen. ich bin auch kein freund von #define, sehe aber im moment _WINxx als brauchbare loesung. am ende wird es so sein muessen, das die sourcen unter linux als lib uebersetzt werden muessen und unter Win als dll. wenn der code eine vernuenftige struktur hat, koennen die #define anweisungen in grenzen gehalten werden. zusaetzliche libs blaehen alles immer nur unnoetig auf. ich habe es ja selbst in der hand