#include Änderungen in gcc
-
bin ich der einzige, den es stört, daß man beim Portieren älteren Codes auf gcc 4.3 zahlreiche #include ändern muß, z.B.
#include <cstring>
zusätzlich zu cstdlib für strlen() ? Mußte das wirklich sein ?
Gibt es einen Trick, der einem das Prüfen und ggf. Ändern sämtlicher #include-Zeilen erspart?
-
Laut Standard ist man: strlen nun einmal in cstring und nicht cstdlib. In alten Versionen der libstdc++ hat cstdlib wohl cstring includiert. Und ja, wenn man die Abhängigkeit reduzieren kann, dann sollte das auch so sein, da es die Compilezeit verbessert und mögliche Verunreinigungen des globalen Namespace verhindert.
-
da ich nicht 138 Dateien per Hand ändern will, bleibt mir dann wohl nichts übrig als:
for i in $(find -name \*.cpp -o -name \*.h); do cat $i|sed 's/<cstdlib>/<cstring>\n#include <cstdlib>/g' > $i.new; done
usw.
-
ich kenne das eher so, daß ich gelegentlich wild headers herausnehme und erst reinmache, wenn der compiler mich zwingt. umd die compilierzeiten zu senken.
vielleicht arbeite ich auf zu langsamen rechnern.
-
ich sehe schon, daß es sinnvoll ist, die Menge impliziter includes zu minimieren, aber hätte dafür nicht auch ein switch der Art "-fmin-include" gereicht - für Fälle, in denen Compilezeit kritische Resource ist?