Frage zu C18 Compiler

Gast #154433
Lesenswert?
• ▲
▼
Hallo

Also wollte heute mal was in C schreiben für den PIC18. Hab mir die
Student Version geholt und installiert. Hab schon früher mit dem C30
gearbeitet, ging auch problemlos.

Nur mit dem C18 hab ich so meine Nöte.
Also wenn ich habe eine main.c ein Lcd.c und ein Lcd.h
Alle sind eingebunden. Das Problem ist, sobald ich in Lcd.c eine
Variable, egal welchen Typs, definieren will spuckt er mir einen Syntax
Error aus. Hat da jemand einen Tip für mich was da falsch sein könnte?
Prozessor Include Datei wurde auch includiert... wie gesagt im C30 ging
das problemlos...

Und dann noch eine Frage. Muss man beim C18 bei einer Funktion, der
nichts übergeben wird in den Klammern void schreiben oder kann man es
auch weglassen? Bei mir spuckt er da nämlich dann aus dass er den
Funktionsprototyp nicht finden kann... beim C30 ging das auch ohne...

Danke

MfG Martin W
Gast #154434
Lesenswert?
• ▲
▼
In ANSI-C (C90) muss eine leere Argumentenliste einer Funktion mit dem
Schlüsselwort void gekennzeichnet werden.
Im antediluvianischen K&R-C war das nicht erforderlich (aber das kannte
ja weder Prototypen noch mehr als eine äußerst rudimentäre
Typüberprüfung), ebenso lässt C++ das Weglassen zu.

Beziehen sich Deine Bezeichner "C18" und "C30" etwa auf den
Microchip MPLAB C-Compiler?

Das sollten eigentlich beide ANSI-C-Compiler sein.

"Das Problem ist, sobald ich in Lcd.c eine
Variable, egal welchen Typs, definieren will spuckt er mir einen
Syntax
Error aus."

Source posten, exakte Fehlermeldung posten.
Gast #154435
Lesenswert?
• ▲
▼
Hallo

Also das mit dem "void" ist gut zu wissen, bin vom C++ programmieren
verwöhnt...

Habe mal einen Screenie angehängt wo der Fehler auftritt, ich hoffe man
sieht alles was nötig ist...

MfG Martin W
Angehängte Dateien:
Gast #154437
Lesenswert?
• ▲
▼
Hallo

Also ich hab probiert das Delay_Lcd mit dem Rückgabewert int
einzurichten, kommt aber der gleiche Fehler, wäre auch krass wenn man
keine Funktionen mehr machen könnte die nichts zurückgeben.
Also ich verstehe das ganze einfach net. Ich mein das ist ein simpler
Funktionsaufruf...
Wenn ich denn Funktionsaufruf in Zeile 21 Auskommentiere, dann gibt er
mir keinen Fehler mehr, erst wieder viel weiter unten... muss also an
dem Aufruf liegen...

Mit den Compiler Setting kann ja auch nnicht wirklich was falsch sein
oder? Ich mein ich hab eh alles durchprobiert...

MfG Martin W
Gast #154440
Lesenswert?
• ▲
▼
Hallo

Tatsächlich! Also das heißt ich muss alle Variablen am Anfang des
Blocks definieren... Warum bitte ist das so?
Also ich muss sagen von C++ auf C umzusteigen ist wahrscheinlich
schwieriger als von C auf C++.... Immer kommt man auf neue Sachen drauf
die man nicht mehr machen darf ;-)

Danke!!!!!!

MfG Martin W
Gast #154442
Lesenswert?
• ▲
▼
Nur mal geraten:
Nicht alle Compiler sind 200% Standardkonform. Es macht ja durchaus
Sinn eine solche Einschränkung wegzulassen (man verliert allerdings
etwas Portabilität). Genauso verstehen viele C-Compiler schon seit
langem // als Kommentarzeichen, obwohl das meines Wissens erst im
C99-Standard definiert wurde.

Markus

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.