Hallo, Ich würde gerne an einem LC-Display einen kompletten String ausgeben. Hierfür habe ich folgende Funktion geschrieben, wobei ich mit dem PICC-Compiler arbeite: void lcd_send_string(char *string) { while(*string != '\0') { lcd_send_byte(*string++); } } Wenn ich nun die Funktion folgendermaßen aufrufe: lcd_send_string("Hallo"); erhalte ich folgende Meldung: "ATTEMPT TO CREATE A POINTER TO A CONSTANT", was ich mir nicht erklären kann. (Über die Funktion lcd_send_byte kann ich einzelne ASCII Zeichen ausgeben) Vielleicht kann jemand helfen ? Vielen Dank schonmal im Vorraus.
Eventuell mal versuchen auf "char*" zu casten.
1 | lcd_send_string((char*)"Hallo"); |
Vielleicht klappts ja.
User schrieb: > while(*string != '\0') solange bis Adresse der Variable "string" != binäre Null ?! *string bedeutet die Adresse der Variable "string" und nicht den Inhalt!
User schrieb: > "ATTEMPT TO CREATE A POINTER TO A CONSTANT", was ich mir nicht erklären > kann. Das wird eine spezielle Einschränkung Deines Compilers sein. Da mußt Du mal in dem Manual dazu oder Beispielverzeichnis nachschauen, wie er es gerne haben möchte. Ansich ist das gültiger Code und z.B. der AVR-GCC oder Keil C51 übersetzen das auch völlig klaglos. Der AVR-GCC legt es im SRAM ab, der Keil C51 im Flash und dann einen generic Pointer darauf. Peter
Lehrmann Michael schrieb: > User schrieb: >> while(*string != '\0') > > solange bis Adresse der Variable "string" != binäre Null ?! > > *string bedeutet die Adresse der Variable "string" und nicht den Inhalt! Falsch! Das ist richtig so. Mit "string" würde man auf die Adresse zugreifen. "*string" ist der Inhalt.
Das mit *string ist schon richtig so. Ein cast auf char* bringt leider auch nichts. Danke trotzdem
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.