XC8 Bug/Fehler?

OP #5397388
Lesenswert?
• ▲
▼
Hallo,

ich habe ein komisches Problem mit dem XC8.
1
int main()
2
{
3
   [...]
4
   return 0;
5
}

Fehlermeldung:
1
main.c:23: error: (291) K&R identifier "main" not an argument
2
main.c:23: error: (314) ";" expected
3
main.c:24: error: (315) "{" expected
4
[...]
5
main.c:56: error: (204) void function can't return a value

Das Handbuch sagt zu Fehler 291 folgendes:
1
This identifier that has appeared in a K&R style argument declarator is not listed inside 
2
the parentheses after the function name, for example:
3
int process(input)
4
int unput;        /* oops -- that should be int input; */
5
{
6
}

Das ganze tritt auch mit einer (!) anderen Funktion auf. Diese ist 
allerdings (im Gegensatz zu main()) in einer Header Datei deklariert. 
Und ja, die Deklaration stimmt mit der Definition überein.

Ich hab schon probiert statt 'int main()' 'int main(void)' zu schreiben; 
allerdings ohne Erfolg.

Was geht hier gerade schief?
Sitzt der Fehler vor dem Bildschirm?


Handbuch: http://ww1.microchip.com/downloads/en/DeviceDoc/52053B.pdf
(Siehe Seite 399)
#5397404
Lesenswert?
• ▲
▼
Kann es sein das main auf dem µC irgendwo als
1
void main();

definiert ist?

Außerdem ist das C89 und kein K&R C.

K&R C sähe so aus:
1
main()
2
{
3
/*  */
4
  return(0);
5
}

Und nein, da fehlt nix. Es wäre aber extrem unüblich für einen auf 
derzeitiger Hardware lauffähigen Compiler den Source Code per default in 
K&R C zu übersetzen.


Kommen noch andere Fehler? Denn das sieht nach einem Folgefehler, 
vergessener Klammer/Semikolon o.ä. aus.
OP #5397415
Lesenswert?
• ▲
▼
Jim M. schrieb:
> Kommen noch andere Fehler? Denn das sieht nach einem Folgefehler,
> vergessener Klammer/Semikolon o.ä. aus.

Hab noch ein bisschen rumprobiert.

Es gab weiter unten in der Listen noch einen Fehler. Tatsächlich hat in 
einer Header-Datei am Ende eines langen Prototypen ein Semikolon 
gefehlt.
(Mal ein gutes Beispiel, wie irreführend Compiler Fehlermeldungen sein 
können).

Und ich dachte ich hätte das schonmal erfolgreich kompiliert :(.

Danke!
Gast #5403052
Lesenswert?
• ▲
▼
Danish B. schrieb:
> Es gab weiter unten in der Listen noch einen Fehler. Tatsächlich hat in
> einer Header-Datei am Ende eines langen Prototypen ein Semikolon
> gefehlt.
> (Mal ein gutes Beispiel, wie irreführend Compiler Fehlermeldungen sein
> können).

Muhaha, mein Lieblingsfehler.

Einen Strichpunkt vergessen, und ein wahlich gigantischer Wald aus 
irreführenden Meldungen an den unmöglichsten Stellen erscheint.

Irreführend ist die Meldung aus Sicht des Compilers aber eigentlich 
nicht. Du musst dir mal ansehen, was der Compiler WIRKLICH zu sehen 
bekommt - also den Output des Präprozessors. Dann wird klar, warum das 
so ist.

Für den XC8 muss man glaub ich dazu eine Compileroption angeben:
http://www.microchip.com/forums/m880255.aspx

Es ist sehr empfehlenswert, sich mal anzusehen, was der arme Compiler 
wiklich vorgeworfen bekommt.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.