Ich verbinde meinen C++ - Code mit mehreren Bibliotheken (von denen einige stark header-basiert sind), von denen einige seit einiger Zeit nicht mehr aktualisiert wurden. Ich habe meinen Code mit -Wall
und Wextra
auf GCC 4.0 für eine Weile ohne Warnungen oder Fehler kompiliert. Jetzt, da ich eine neuere Version von GCC (4.3) verwende, haben einige meiner Dateien Warnungen aus den Include-Dateien anderer Bibliotheken gedruckt (z. B. warning: type qualifiers ignored on function return type
, wenn der Vorlagencode der Bibliothek das Schlüsselwort restrict
für einen zurückgegebenen Zeiger verwendet). In ähnlicher Weise gibt eine der etwas älteren OpenMPI-Versionen auf einem von mir verwendeten Cluster beim Kompilieren mit GCC 4.1 viele Warnungen aus.Compiler-Warnungen in anderen Bibliotheken
Die Frage ist: Kann ich alles tun, um Warnungen zu deaktivieren nur in anderen Menschen Code, wenn Sie ein lokales Verzeichnis zum Lesen einer Header-Datei verlassen? Ich möchte meinen Code so sauber und korrekt wie möglich machen (daher aktiviere ich alle Warnungen), aber der Zweck ist besiegt, wenn mein make-Prozess von Problemen überladen ist, die ich nicht beheben kann. Muss ich bestimmte Warnungen, die in ihrem Code auftauchen, nur global deaktivieren?
Ich glaube nicht - System ändert nichts anderes. Dies war mein Ansatz, und es hat gut funktioniert. Das einzige Problem ist, dass es immer noch Fehler aufgrund von Makroexpansion in Ihrem eigenen Code gibt (wo der Header das Makro definiert). –