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
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.
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
Hallo Rolf, danke für deine Hilfe, ich werde das gleich mal morgen ausprobieren. Gruß Karima
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.