G++ und der C++-Standard
-
Hallo zusammen,
mein Problem bezieht sich in erster Linie auf Open Source Entwicklung in C++ unter Linux. Wer damit keine Erfahrung hat oder Open Source nicht mag, darf schonmal weitergehen
Seit etwa einem halben Jahr nutze ich mehr und mehr C++ und immer weniger C mit Klassen (bin auch so einer der aus dem C-Lager nach C++ gekommen ist), und stelle dabei gleichzeitig fest dass ich immer neuere G++-Compiler voraussetzen muss. Wie haltet ihr das, sagt ihr rigoros "mein Code braucht nunmal Features die erst ab GCC 4.0 zuverlässig laufen"? Oder programmiert ihr dann doch nochmal "drum herum", damit der Code auch noch auf einem G++ 3.2 läuft? Immerhin ist Debian Sarge die aktuelle Stable, und hat meines Wissens auch nur einen 3.3er...
Derzeit habe ich den G++ 2.95 schon ganz abgeschrieben (sehr zum Leidwesen aller Debian Woody-User, von denen es unter meiner "Kundschaft" leider immernoch welche gibt). Bei einem Test hier @work mit einem alten SLES8 (G++ 3.2) musste ich dann feststellen dass basic_istream::readsome ganz und garnicht tut was es soll, während normales open/read/close (POSIX-C) läuft. Mit derselben Eingabedatei und G++ 3.3 geht es.
Mir stellt sich jetzt ernsthaft die Frage, ob ich es verantworten kann, den G++ 3.2 auch zu verbieten oder ob ich den C-Code benutze (was mir natürlich weniger gut gefällt). Wie haltet ihr das? Gibt es überhaupt Open Sourceler hier, die ernsthaftes C++ programmieren? In der freien Wildbahn sieht man oft auch nur C mit Klassen...
-
Den 2.95er g++ kannst Du normalerweise guten Gewissens vernachlässigen, normalerweise hat niemand auf einem echten System noch Woody laufen, wundert mich ein bisschen, dass das in Deinem Kundenkreis anders ist.
Ansonsten musst Du Dich einfach danach orientieren, wie Deine Kunden ausgestattet sind. Normalerweise vereinbart man einfach eine Zielplattform, auf der die Sachen dann laufen müssen.
(Den 3.3er-g++ musst Du auf alle Fälle noch unterstützen, wegen Sarge. 3.2 würde ich persönlich nur mehr auf explizite Anfrage von Seiten des Kunden berücksichtigen, aber wie gesagt, immer vorher nachfragen.)
-
vielleicht reicht/hilft __GNUC__ und __GNUC_MINOR__ abzufragen und die problemstellen entsprechend (um) zu schreiben bzw bedingt zu compilieren und das compilerversionverbieten auf __GNUC__ < 3 zu beschraenken?