Ich habe nie verstanden, warum C- und C ++ - Compiler versuchen, Fehler zu beheben und das Parsen fortzusetzen. Fast immer erzeugt der erste Fehler einen Strom von falschen Fehlern, die verschwinden, sobald der erste behoben ist. Nach einigen Jahren Erfahrung habe ich einfach aufgehört, alle Fehler außer den ersten in jeder Datei zu untersuchen. Ich führe den Compiler erneut aus und wiederhole dies, bis keine Fehler mehr vorliegen. Ist es eine gängige Praxis?
c++
c
error-messages
compiler
alexk7
quelle
quelle
Antworten:
Manchmal hängen die Fehler nicht zusammen. Ich finde es einfacher, eine Fehlerliste anzusehen und die Ursache für eine Reihe verwandter Fehler zu beheben, und dann den nächsten nicht verwandten Fehler zu beheben . Wenn das Projekt groß ist und eine Weile dauert, finde ich es weniger frustrierend, auf diese Weise zu arbeiten, als den ersten Fehler zu beheben, neu zu kompilieren, zu wiederholen ...
quelle
Dies hängt von der Kompilierungszeit ab . Wenn ich beispielsweise weiß, dass ich gerade einen Master-Header geändert habe, der eine Neuerstellung des gesamten Projekts auslöst, werde ich den Rest des Fehler-Stacks genauer untersuchen und prüfen, ob ich einige davon beheben kann. Das gibt mir ein besseres Gefühl, wenn ich aufstehe, um Kaffee zu kochen, während der Compiler läuft.
quelle
Ja, ich mache dasselbe, es sei denn, ich verwende den Compiler, um die Umgestaltung zu unterstützen. In diesem Fall gefällt mir die vollständige Fehlerliste :)
quelle
Wenn es eine Lücke in den Zeilennummern ist, der Compiler wahrscheinlich hat sich erholen und dann einen weiteren Fehler gefunden.
Normalerweise versuchen Sie jedoch nur einen Fehler in jeder Gruppe zu beheben.
quelle
Bessere Compiler führen zu besseren Ergebnissen und liefern nach dem ersten Fehler nützlichere Fehler, häufig durch eine Art automatische Korrektur der Fehler, sodass vermutlich guter Code zumindest überprüft werden kann. Aber dann bin ich es gewohnt, in Java, in Eclipse, zu arbeiten, wo Syntax-Tippfehler sofort erkannt und leicht korrigiert werden und andere Compiler-Fehler vielfältiger und für den Compiler leichter zu beheben sind. Ich kann nur annehmen, dass es ähnlich ist, wenn ich in Microsoft-IDEs und anderen in C ++ oder C # arbeite.
quelle
Ja - oder zumindest überfliege ich sie. Es ist ziemlich einfach herauszufinden, ob die Fehler zusammenhängen (normalerweise reicht ein Blick auf die Zeilennummer), und ich mag es, sie alle in einem Durchgang zu reparieren und dann neu zu kompilieren.
quelle
Ich mache dies (um die Fehler nach dem ersten zu lesen) nur, wenn die 1-cpp-Kompilierung sehr lang ist. Oder nicht verfügbar. Dann stelle ich lieber sicher, dass ich alles behoben habe, was ich in den Compilerfehlern als nicht mit dem ersten Fehler in Zusammenhang stehend identifizieren konnte.
Wenn Ihre cpp-Datei alleine kompiliert werden kann und dies in weniger als einer Sekunde erledigt ist (oder wenn Sie einen "Intellisense" -Punktfehler haben, bevor die Kompilierung überhaupt begonnen hat), müssen Sie dies die meiste Zeit nicht tun.
Ich arbeite derzeit an einem Projekt, in dem ich keinen einzigen CPP kompilieren kann (und ich habe nicht die Hand auf dem Build-System, so dass ich das O__o nicht ändern kann), und einige CPP-Dateien können mehr als zehn Minuten zum Kompilieren benötigen ( auch nach langwierigen bemühungen, das zu reduzieren, haben wir es nur um 50% der ursprünglichen kompilierungszeit gekürzt ...).
In dieser Art von sehr langen Kompilierungs-Setups denken Sie oft zuerst nach, bevor Sie auf "Build" klicken ... und denken sogar viel nach, um möglicherweise Fehler vor dem Compiler zu finden, da Sie sie mit Sicherheit schneller als im Kopf bekommen .
quelle
Es ist durchaus üblich, wie Sie zu tun. Normalerweise sage ich Praktikanten oder Programmieranfängern, die von der Anzahl der Fehler überwältigt sind, fast alle Fehler außer dem ersten zu ignorieren. Es handelt sich höchstwahrscheinlich um einen echten Fehler, der behoben werden muss, und nicht um einen irreführenden Phantomfehler, der durch einen vorherigen Fehler verursacht wurde. Einige (die meisten?) Compiler haben aus diesem Grund die Möglichkeit, die Kompilierung nach dem ersten Fehler abzubrechen. Build-Systeme können normalerweise so konfiguriert werden, dass sie nach der ersten fehlerhaften Datei beendet werden.
Es gibt jedoch Gründe, die Kompilierung auch nach dem Erkennen von Fehlern fortzusetzen. Beispielsweise möchten Sie möglicherweise ermitteln, wie viele Dateien Fehler aufweisen, oder feststellen, ob eine enthaltene Headerdatei Fehler in mehreren Dateien verursacht.
quelle