"expected declaration or statement at end of input"

Gast #2282488
Lesenswert?

Hallo!

Normalerweise stelle ich nicht so blöde Fragen aber ich habe mir schon 
einige Threads durchgelesen, die dieses Thema behandlen, habe den Fehler 
aber nicht gefunden (oder ich bin blind). Deshalb wäre ich sehr dankbar, 
wenn ihr mir helfen könntet.

Fehlermeldungen und Warnungen:

F:\Maxi\Documents\Target\Digitaluhr\HMS-Uhr-V3.0\HMS-Uhr-V3.0\HMS-Uhr-V3 
.0.c(13,5):  'main' is normally a non-static function
F:\Maxi\Documents\Target\Digitaluhr\HMS-Uhr-V3.0\HMS-Uhr-V3.0\HMS-Uhr-V3 
.0.c(29,1):  expected declaration or statement at end of input

LG
Angehängte Dateien:
#2282513
Lesenswert?

Marcus schrieb:
> Danke! Habe bei einem Switch die Klammer vergessen. Warum schreit er
> aber dann in der C-Datei und nicht in der Header?

Weil sich der Fehler fortpflanzt.

Die Unterteilung, die du in Form von verschiednenen Dateien siehst, 
sieht der Compiler nicht mehr, weil der Präprozessor durch das #include 
schon alle Dateien in eine einzige Übersetzungseinheit zusammengeführt 
hat.

Und solange das was der Compiler zu Gesicht bekommt der Syntax 
entspricht, gibt es keinen Fehler. Dazu kommt eine Erweiterung des gcc, 
die es erlaubt innerhalb von Funktionen wieder neue Funktionen zu 
machen. Und so stapeln sich dann ab deiner vergessenen } alle danach 
folgenden Funktionen in die fehlerhafte Funktion hinein. Bis dann eben 
der COmpiler am Ende drauf kommt, dass da eine Funktion noch gar nicht 
beendet wurde.
#2282527
Lesenswert?

So wie eben der Präprozessor arbeitet.

Der arbeitet erst ein mal alle # Zeilen ab und erstellt daraus einen 
neuen Quelltext, den er dann an den eigentlichen Compiler weitergibt. 
Was das alles bedeutet, was zwischen den # Zeilen steht, interessiert 
den Präprozessor nicht. Der kümmert sich erst mal nur um alle # 
Anweisungen.
Gast #2282541
Lesenswert?

Marcus schrieb:
> Achso, das heißt, dass er quasi die Headerdatei an Ort und Stelle
> "einfügt" und erst am Ende der C-Datei schreit, weil ihm eine Klammer
> fehlt. Oder?

Wenn er in der Header-Datei einen Fehler erkennt, schreibt er das 
natürlich mit dazu. Aber in diesem Fall erkennt er im Header keinen 
Fehler. Erst wenn er ganz zum Schluß auf einmal merkt, daß da noch eine 
schließende Klammer fehlt, merkt er, daß was nicht stimmt und meldet 
deshalb erst dort den Fehler.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren