Hallo, ich habe ein größeres C-Projekt, verwende ATStudio7 und Atmel Start. Beim Compilieren kommen jetzt plötzlich viele Fehler dieser Art: ..."storage class specified for parameter 'torque_adjustments_t' DSA_V0.01 P:\Entwicklung\Digitalaufnehmer-24Bit\SAME54_Clocktest\SAME54_Clocktest\ sensor_settings.h 59" Ich weis noch vage, dass man den bekommt, wenn man bei einer Deklaration den Strichpunkt am Ende vergessen hat, aber ich finde keinen Fehler. Das Projekt besteht schon aus vielen .c und h Dateien, die noch letzte Woche korrekt übersetzt wurden. Gibt es irgend ein Tool, das nach solchen Fehlern sucht? Wie kann ich die Fehlerstelle eingrenzen?
Elektrolurch schrieb: > Beim Compilieren kommen jetzt plötzlich viele Fehler dieser Art: > ..."storage class specified for parameter 'torque_adjustments_t' > DSA_V0.01 > P:\Entwicklung\Digitalaufnehmer-24Bit\SAME54_Clocktest\SAME54_Clocktest\ > sensor_settings.h 59" Wo ist da ein Fehler? Ich sehe da nur, dass eine Speicherklasse spezifiziert wurde... > Ich weis noch vage, dass man den bekommt, wenn man bei einer Deklaration > den Strichpunkt am Ende vergessen hat Könnte sein. Könnte aber auch was andres sein. > aber ich finde keinen Fehler. Ich auch nicht. > Gibt es irgend ein Tool, das nach solchen Fehlern sucht? Ja, der Compiler tut das. > Wie kann ich die Fehlerstelle eingrenzen? Hast du an dieser Datei was geändert? Bekomst du diesen Fehler beim Compilieren jeder C-Datei in der dieser Header eingebunden ist? Hast du Headerdateien in andere Headerdateien eingebunden? Hast du die Reihenfolge der Headerdateien im C-Code geändert? Lässt sich die Version von vorgestern noch compilieren? Was sagt das Vergleichstool, wenn du die letzte compilierfähige Version mit der jetzigen vergleichst?
:
Bearbeitet durch Moderator
Elektrolurch schrieb: > Wie kann ich die Fehlerstelle eingrenzen? Es wäre mir neu, daß bei Fehlermeldungen nicht der Dateiname und die Zeilennummer ausgegeben wird. Z.B.:
1 | main.c:24:1: error: ... |
Der Fehler kann natürlich auch vorher passiert sein, z.B. in einer Macrodefinition.
>> Hast du an dieser Datei was geändert? Nicht willentlich, aber das Änderungsdatum zeigt, dass es diese Woche überschrieben wurde. >>Lässt sich die Version von vorgestern noch compilieren? Was sagt das Vergeleichstool, wenn du die letzte compilierfähige Version mit der jetzigen vergleichst? Die Dateien werden doch nach Änderung sofort überschrieben? Macht ATStudio versteckte Backups? Es sind 5 ziemlich umfangreiche Dateien mit Datum dieser Woche... Welches Vergleichstool meinst du? Welches ist dafür gut?
Ich denke Lothar wollte damit andeuten dass es normal wäre bei einem solch "umfangreichen" Softwareprojekt ein regelmäßiges Backup zu machen. Normalerweise nimmt man dafür ein Versionierungssytem, mit dem es möglich wäre jeden gewünschten Stand wiederherzustellen. Bei allen mit bekannten Versicherungssystemen ist auch gleich noch ein Vergleichstool mit dabei. Damit könntest du die Unterschiede deines letzten funktionsfähigen Stand zu jetzt feststellen.
Elektrolurch schrieb: > Nicht willentlich, aber das Änderungsdatum zeigt, dass es diese Woche > überschrieben wurde. LOL. Es gibt seit mindestens 20 Jahren Versionierungssysteme. Es ist für mich absolut unverständlich, diese nicht zu nutzen. Und wenn es nur für einen selbst ist. Und nein man braucht dazu keinen Server: Git kommt mit dem normalen Dateisystem aus, im einfachsten Fall nur mit dem Projektordner.
Wir haben eine Server-seitiges Backup, aber das kann dauern, bis ich das bekomme.
Ich habe das Backup - schneller als gedacht. Doch welches Programm eignet sich da am Besten dazu? Oft wird man ja überschwemmt von den Änderungen, nur weil eine Leerzeile unterschiedlich ist.
Elektrolurch schrieb: > Doch welches Programm eignet sich da am Besten dazu? Zum Vergleich benutze ich unter Windows gerne Winmerge, unter Linux Meld. > Oft wird man ja überschwemmt von den Änderungen, > nur weil eine Leerzeile unterschiedlich ist. Das kannst du in den genannten Programmen konfigurieren. Normale Backups mache ich nur unregelmäßig alle 4-8 Wochen. Für meine Quelltexte reicht das nicht, um solche Fälle wie deinen nachzuvollziehen. An der Stelle hilft mir ein VCS (Versioning Control System). Früher habe ich dazu Subversion benutzt, heute Git. Für beide braucht man keinen Server und sie können die oben genannten Programme einbinden. http://stefanfrings.de/git/index.html
Elektrolurch schrieb: > Oft wird man ja überschwemmt von den Änderungen, nur weil eine Leerzeile > unterschiedlich ist. Nö, die Tools können sich zeilenweise synchronisieren. Wir benutzen TortoiseSVN. Das stellt 2 Fenster nebeneinander dar, wo die Änderungen gut sichtbar sind.
Ich habe Notepad++ mit Compare-Extension benutzt und habe jetzt den Fehler gefunden: Es war tatsächlich ein fehlender Strichpunkt hinter einer Deklaration in einer ganz anderen Datei. Ich finde es schade, dass der Compiler bei sowas nicht wenigstens eine Warnung ausgibt. Meist ist ja der eigentliche Fehler viel weiter "oben", oder wie hier, in einer anderen Datei. Jedenfalls Danke an alle für eure Hilfe!
Elektrolurch schrieb: > Ich finde es schade, dass der Compiler bei sowas nicht wenigstens eine > Warnung ausgibt. Könnte der Compiler ganz locker erkennen ob da ein Strichpunkt fehlt, bräuchte man den Strichpunkt doch gar nicht mehr hinschreiben...
Elektrolurch schrieb: > Die Dateien werden doch nach Änderung sofort überschrieben? Ähm ja klar, DU SELBER musst natürlich 1x am Tag das Projektverzeichnis sichern, wenn du kein Managementsystem am Laufen hast. Elektrolurch schrieb: > Wir haben eine Server-seitiges Backup Glück gehabt. Mach solche Sicherungen in Zukunft einfach selber. Elektrolurch schrieb: > Welches Vergleichstool meinst du? Welches ist dafür gut? Ich nehme Beyond Compare. Aber auch Windiff (im Lieferumfang von Win10) ist besser als nichts.
:
Bearbeitet durch Moderator
Elektrolurch schrieb: > Ich finde es schade, dass der Compiler bei sowas nicht wenigstens eine > Warnung ausgibt. Der arme Kompiler kann den Fehler erst erkennen, wenn das Kind im Brunnen liegt. Hinzu kommt: Leider sind die bisherigen C und C++ zu doof um deine Absichten im Vorfeld analysieren zu können. Bedenke: Eine Deklarationszeile, mit vergessenem ; ist erstmal gültige Syntax. Das Kind fällt danach in den Brunnen.
Cyblord -. schrieb: > Elektrolurch schrieb: >> Ich finde es schade, dass der Compiler bei sowas nicht wenigstens eine >> Warnung ausgibt. > > Könnte der Compiler ganz locker erkennen ob da ein Strichpunkt fehlt, > bräuchte man den Strichpunkt doch gar nicht mehr hinschreiben... Hast Du in den Compiler-Optionen -Wall angegeben?
Elektrolurch schrieb: > Gibt es irgend ein Tool, das nach solchen Fehlern sucht? > Wie kann ich die Fehlerstelle eingrenzen? Brain 2.0, auch Erfahrung genannt. Das ist einer der Bereiche beim Programmieren, wo man tatsächlich aus den eigenen Fehlern lernt. Oliver
>> Hast Du in den Compiler-Optionen -Wall angegeben?
Ja, die Option -Wall war / ist eingeschaltet.
Und ja, wenn ich den Fehler nochmal mache und kompiliere, finde ich nach einem Wust anderer Fehler tatsächlich "parameter name omitted". Aber da alle anderen ja nur Folgefehler sind, fiel mir das nicht auf.
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.