Hallo, Mir ist gerade aufgefallen dass die Arduino-IDE anscheinend von unten nach oben die Syntax kontrolliert, jedenfalls wird immer die unterste Zeile die einen Fehler enthält markiert. Warum ist das so? Hat das einen Vorteil oder ist das einfach nur Geschmackssache?
Eigentlich macht die erste warnung mehr Sinn. Für Anfänger könnte der erste Fehler in der letzten Zeile stehen und mehr Sinn machen.
Elektro schrieb: > Mir ist gerade aufgefallen dass die Arduino-IDE anscheinend von unten > nach oben die Syntax kontrolliert, jedenfalls wird immer die unterste > Zeile die einen Fehler enthält markiert. Ganz klar: Der Compiler verwendet einen so genannten Bottom-Up-Parser zur Analyse des Quellcodes: https://de.wikipedia.org/wiki/Bottom-Up-Parser Nee, war nur Spaaß :) Der aktuelle GCC hat einen Top-Down-Parser nach dem Prinzip des rekursiven Abstiegs. Früher hatte der GCC zwar einen LALR-Parser, und der arbeitet bottom-up. Das ist aber schon lange her und hat mit der Reihenfolge der Fehlermeldungen überhaupt nichts zu tun. > Warum ist das so? Ist das wirklich so? Hast du ein kleines Beispiel? in folgendem Beispiel sieht es vielleicht so aus, als würfle der Compiler die Meldungen durcheinander:
1 | int a; |
2 | double a; |
Fehlermeldungen (Zeile 1 folgt Zeile 2):
1 | sketch_apr23a:2: error: conflicting declaration 'double a' |
2 | double a; |
3 | ^ |
4 | sketch_apr23a:1: error: 'a' has a previous declaration as 'int a' |
5 | int a; |
6 | ^ |
In Wirklichkeit ist aber die zweite keine eigenständige Fehlermeldung, sondern gibt nur einen zusätzlichen Hinweis zur ersten.
:
Bearbeitet durch Moderator
Vielleicht so: die Arduino IDE sucht die Compilermeldungen "von hinten her" durch um schneller etwas zu finden was der Anzeige würdig befunden wird. Die richtige Lesereihenfolge der Compilermeldungen sollte aber von oben nach unten erfolgen, dabei stösst man "irgendwo in der Mitte aller Meldungen" auf den ersten Fehler der der Anzeige würdig ist. Dies ist ein klein wenig aufwändiger (nicht schwieriger!) umzusetzen.
Achim S. schrieb: > Eigentlich macht die erste warnung mehr Sinn. > > Für Anfänger könnte der erste Fehler in der letzten Zeile stehen und > mehr Sinn machen. Arduino ist für Einsteiger zu richtigen Werkzeugen, Anfänger habe da nichts verloren...
Hallo, was er meinen dürfte ist mir auch schon aufgefallen: int variable = 0; Im Source hat man jetzt Tippfehler (copy&paste sei Dank): varible = 1 ... varible = 2 ... varible = 3 Der Compiler bricht mit Fehlermeldung ab und verweist auf die Zeile mit dem letzten Auftreten der Variablen. Korrigiert man jetzt nur diese Stelle bricht er eine weiter höher ab usw. Allerdings habe ich mir über dieses Verhalten bisher keine Gedanken gemacht... Gruß aus Berlin Michael
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.