Fehlermeldung zu char/array/pointer in einer C-Funktion

OP #2907670
Lesenswert?
• ▲
▼
Hallo,

ich habe, anglehnt an das Tutorial zu UART, ein Programm geschrieben, 
dass Buchstaben von Labview empfängt und daraus einen Befehl für eine 
LED am ATmega8, PortD, "macht".

Im fehlerbetroffenen Abschnitt sollte eigentlich die Funktion 
empfangen_lab zuerst aufgerufen werden. Hier wird ein Pointer auf die 
Variable Buchstabe vom Typ char übergeben, sodass direkt in der Funktion 
die Variable Buchstabe verändert (d.h. die empfangenen Zeichen immer in 
das nächste freie Feld abgespeichert) werden kann.
Dann wird die Funktion empfangen_lab_auswerten aufgerufen, die einen 
8-Bit-int zurückgibt und an die die Variable Buchstabe übergeben wird.

Ich konnte nun alle Fehlermeldungen lösen bis auf diese:
"expected 'char' but argument is of type 'char *'"dort wo die FUnktion 
deklariert wird.
Dann "passing argument 1 of 'empfangen_lab_auswerten' makes integer from 
pointer Warning" wo sie aufgerufen wird.
In der FUnktion selbst "subscripted value is neither array nor pointer 
nor vector" wo ich auf die Variable zugreife.

 Warum sagt die Fehlermeldung nun, dass "Buchstabe"(bzw. empfang) kein 
array sei, obwohl ich sie so angelegt habe? Wenn ich bei der Deklaration 
einen Pointer übegeben lasse, kommt die letzte Fehlermeldung immer noch.
Leider hatten wir bisher nur ein Semester C++-Programmierung, sodass ich 
mich nicht so gut auskenne.
Im Anhang ist das Programm, ich habe alles vermutlich unnötige gelöscht.

Herzliche Grüße
Karima
Angehängte Dateien:
Gast #2907703
Lesenswert?
• ▲
▼
Karima L. schrieb:
> Warum sagt die Fehlermeldung nun, dass "Buchstabe"(bzw. empfang) kein
> array sei, obwohl ich sie so angelegt habe?

empfang ist so definiert: char empfang
Kein Array, sondern ein(!) char. Daher auch

> "expected 'char' but argument is of type 'char *'"dort wo die FUnktion
> deklariert wird.

Du hast die Funktion so definiert, daß sie ein char haben will, 
versuchst aber, ihr stattdessen das Array zu übergeben. Und

> "passing argument 1 of 'empfangen_lab_auswerten' makes integer from
> pointer Warning"

hier wirst du darüber gewarnt, daß der Compiler versucht, implizit aus 
deinem pointer einen Pointer zu machen. Das ist auch gut so, denn das, 
was dabei rauskommt, ist Blödsinn.

> Wenn ich bei der Deklaration einen Pointer übegeben lasse, kommt die
> letzte Fehlermeldung immer noch.

Du mußt es auch in der Definition ändern.

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.