Portablen Code schreiben
-
Hi,
ich habe hier bestehenden Code einer grossen Software, die auf Linux und Windows laufen muss.
Im Moment wird das direkt im Code immer per ifdefs gemacht, z.B. so:#ifndef _WIN32 mkdir( GENERATE_DIR, S_IRWXU | S_IRWXG ); #else _mkdir( GENERATE_DIR ); #endif
Man hat dadurch halt einige ifdefs mitten im Code. Ist diese Vorgehensweise ok? Ist das die Standardmethode fuer portablen Code?
-
Besser wärs wohl alle plattformabhängigen Funktionen in einem extra Modul zu kapseln und dann nur die abstrahierten Funktionen aus diesem Modul zu verwenden...
-
Meinst du damit quasi das hier?
// OSdependentstuff.c void myMkDir(char* GENERATE_DIR) { #ifndef _WIN32 mkdir( GENERATE_DIR, S_IRWXU | S_IRWXG ); #else _mkdir( GENERATE_DIR ); #endif }
Benutzung:
#include "OSdependentstuff.h" ... myMkDir("foo");
?
-
In der Fachsprache wird so etwas auch "Bibliothek" genannt
.Und da Arbeiten mit einem Dateisystem ein Standardproblem ist, würde es sich vermutlich auch lohnen, mal zu gucken, ob dafür schon jemand etwas geschrieben und veröffentlicht hat. (Leider fallen mir gerade nur C++-Bibliotheken dafür ein, musst du also selber suchen)
edit: @porter++: Ja, so etwas meint dot. Wobei man die Funktionen natürlich eher nach Aufgabenstellung sortieren sollte und nicht nach OS-abhängig und nicht-OS-abhängig.