ich wollte mich mal daran wagen, eine lib zu schreiben, die unter Linux auf Bestimmte Header zugreift und unter Windows eben auf andere. Was haltet Ihr von solchen Spielchen?
C++:
#ifdef MSC # include <windows.h> #elsif GNU_C # include <sys/stat.h> #endif
Allgemein gebräuchlich oder schlechter Stil? -- perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
denke schon, wahrscheinlich muss man nochmal für bsd und evtl auch für macos(das ja eigentlich inzwischen auch ein bsd ist) nochmals unterscheiden, aber im groben sollte das schon ganz gut sein. Kannst dir höchstens mal diverse Libraries anschauen die portabel sind, und dort ansehen wie die das machen. -- class God : public ChuckNorris { };
Naja, die standard-inlcudes von den Praeprop direktiven abhaengig machen ist das eine sache ... Da es Dir aber auf plattformunabhaengigkeit ankommt, wuerd ich die Interfaces (header) gleichhalten, und nur die impl (c / cpp) auf die plattform mappen. die impls ziehen dann die plattformspeziefischen Systemheader an, und du entscheides bei erstellen nur welche impl dazugelinkt wird.
Der vorteil: du ersparst Dir diese unuebersichtlichen #ifdefs groesstenteils .... und deine impls sind schoen nach plattform sortiert. der nachteil: du wirst plattformspezifische makefiles brauchen ...