Forum: Mikrocontroller und Digitale Elektronik Compiler Fehlermeldung, Fehler finden


von Elektrolurch (Gast)


Lesenswert?

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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von Peter D. (peda)


Lesenswert?

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.

von Elektrolurch (Gast)


Lesenswert?

>> 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?

von MaNi (Gast)


Lesenswert?

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.

von Andreas M. (amesser)


Lesenswert?

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.

von Elektrolurch (Gast)


Lesenswert?

Wir haben eine Server-seitiges Backup, aber das kann dauern, bis ich das 
bekomme.

von Elektrolurch (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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

von Peter D. (peda)



Lesenswert?

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.

von Elektrolurch (Gast)


Lesenswert?

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!

von Cyblord -. (cyblord)


Lesenswert?

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...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von EAF (Gast)


Lesenswert?

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.

von Pete K. (pete77)


Lesenswert?

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?

von Oliver S. (oliverso)


Lesenswert?

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

von Elektrolurch (Gast)


Lesenswert?

>> Hast Du in den Compiler-Optionen -Wall angegeben?
Ja, die Option -Wall war / ist eingeschaltet.

von Elektrolurch (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.