PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Code für Win+Linux in einer Datei



SeeksTheMoon
29-08-2003, 10:23
Wenn ich Code schreibe, der unter Windows und Linux gleich funktionieren muss (z.B. Netzwerkprogrammierung) dann bieten beide Systeme andere Header und Bibliotheken, z.B. winsock.h unter Win oder sys/socket.h, netinet/in.h und arpa/inet.h unter Linux.

Also wär es wohl am günstigsten, das mit Präprozessordirektiven je nach Wunsch auswählen zu können.

ifdef windows
..bla..
endif
ifdef linux
..blabla
endif

Wie sehen dafür die ifdef-Anweisungen genau aus?

wraith
29-08-2003, 10:33
Nein #ifdef ist nicht die beste Lösung dafür.
Die Lösung ist,du erstellst zwei Header (einen für Linux einen für Windows),wo du die entsprechenden Header includest.
Und je nachdem auf welchem System kompiliert wird,packst du den entsprechenden Header zum Projekt dazu.

Präprozessoranweisungen sollten soweit wie möglich vermieden werden.
Was ist wenn du ein anderes System unterstützen willst,das wieder andere Header hat?
Du mußt neune Präprozessorcode einfügen -> ugly,error-prone.



#ifdef _WIN32

#else

#endif

SeeksTheMoon
29-08-2003, 11:18
Hm, ok. Soviel zu den Headern. Und wie ist das mit den cpp-Dateien die die Funktionen in den Headern benutzen?
Wenn ich dort auch für jedes System separate erstelle, dann hab ich die totale Trennung und muss das mit den makefiles organisieren.
Wie sieht eigentlich das ifdef für Linux aus?