Forum: Compiler & IDEs Fehlermeldung zu char/array/pointer in einer C-Funktion


von Karima L. (runkelruebe)


Angehängte Dateien:

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

von Rolf Magnus (Gast)


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.

von Rolf Magnus (Gast)


Lesenswert?

Rolf Magnus schrieb:
> daß der Compiler versucht, implizit aus deinem pointer einen Pointer zu
> machen

Soll natürlich heißen:

daß der Compiler versucht, implizit aus deinem pointer einen char zu
machen

von Karima (Gast)


Lesenswert?

Hallo Rolf,

danke für deine Hilfe, ich werde das gleich mal morgen ausprobieren.
Gruß
Karima

von Karima L. (runkelruebe)


Lesenswert?

Hallo,

ich war am Freitag nicht mehr in der Uni, habe aber heute deine 
Ratschläge ausprobiert und es hat geklappt. Die Fehlermeldungen sind 
verschwunden, vielen Dank!

Viele Grüße
Karima

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.