Hallo, ich möchte erstmalig Strings verarbeiten. Compiler ist XC32 von Microchip. Irgendwie finde ich keine passende Syntax oder eine fertige Funktion einer Lib. Wer kann helfen ?
Tja der Compiler meckert halt, weil irgend ein include wohl fehlt...
DirkF schrieb: > Tja der Compiler meckert halt, weil irgend ein include wohl fehlt... dann schreibt es doch rein. (Tipp: Es ist oft hilfreich, Fehlermeldungen zu Posten )
Aha, jetzt geht es. Das Problem war, dass der Textpuffer von typ unsigned char war, habe ihn auf char geändert. Gruß Dirk
Dirk F schrieb: > Irgendwie finde ich keine passende Syntax oder eine fertige Funktion > einer Lib. > Wer kann helfen ? http://ww1.microchip.com/downloads/en/DeviceDoc/51685E.pdf
Hallo, jetzt muss ich doch nochmal nachfragen an die Experten: Der Code: unsigned char testpuffer [40]; strcpy ( testpuffer,"_Meldetext"); erzeugt eine warning: pointer targets in passing argument 1 of 'strcpy' differ in signedness Dieser Code wird fehlerfrei compiliert: signed char testpuffer [40]; strcpy ( testpuffer,"_Meldetext"); char testpuffer [40]; strcpy ( testpuffer,"_Meldetext"); Compiler ist der XC32. Laut Handbuch ist plain char standardmäßig vom type signed !!! Bei den 8-Bit compilern ist char standardmäßig unsigned! In der 32-bit lib "string.h" sind die Parameter für die Funktion strcpy als char definiert, d.h. der compiler macht daraus ein signed char. Die Lib kann und möchte ich auch nicht verändern. Ich brauche aber für Strings den Typ unsignbed char, da andere Funktionen das so haben wollen. Also wie kann ich dem Compiler beibringen, dass er aus char den Typ unsigned char machen soll ? Im Handbuch vom compiler steht die Option -funsigned-char Ich weiß nicht genau, wo man dies Funktion eintragen muss. Oder wie kann ich 2 verschiedene String Typen koperen ? : signed char testpuffer1 [40]; unsigned char testpuffer2 [40]; testpuffer1 = testpuffer2 ; // erzeugt wieder eine Compilerwarnung ? Danke für eure Hilfe.
DirkF schrieb: > Ich brauche aber für Strings den Typ unsignbed char, da andere > Funktionen das so haben wollen. dann ändere diese Funktionen ab. gehe einfach davon aus char != unsigned char != signed char char ist wie ein eigenen Datentyp zu betrachten.
HAllo Peter, versteh ich nicht. Ich möchte die LIB nicht verändern, damit auch neuere Versionen des Compiler laufen. Welche Funktion soll ich abändern ? Die Lib "string.h" oder den TCP-IP Stack von mIctrochip ? Beides möchte ich nicht machen.
die strcpy()-Funktion erwartet zwei Strings vom "Default-char"-Typ. Der ist - abhängig von der Plattform und vom Schalter "-funsigned-char" bzw. "-fno-unsigned-char" - eben signed oder unsigned. Wie das bei dir genau ist, mußt Du in der Dokumentation nachlesen. Wenn die Typen nicht passen - der Default-char-Typ also z.B. unsigned char ist, Du aber einen signed char an strcpy übergeben willst - dann hilft ein Cast, um die Warnung loszuwerden.
DirkF schrieb: > Welche Funktion soll ich abändern ? ich dachte die Funktionen sind von dir > Die Lib "string.h" oder den TCP-IP Stack von mIctrochip ? > Beides möchte ich nicht machen. verstädlich, zur not mit einem Cast arbeiten.
Hallo zusammen, danke für die HInweise. Wie sieht denn der Syntax for do einen cast aus ? Ist das so richtig ? strcpy ( (char) testpuffer,"_Meldetext"); strcpy ( (unsigned char) testpuffer,"_Meldetext"); strcpy ( (signed char) testpuffer,"_Meldetext"); In allen 3 Fällen wir aber wieder eine Warnmeldung ausgegeben....???
DirkF schrieb: > Ist das so richtig ? > > strcpy ( (char) testpuffer,"_Meldetext"); > strcpy ( (unsigned char) testpuffer,"_Meldetext"); > strcpy ( (signed char) testpuffer,"_Meldetext"); nein, das fehlt der *
Super Danke Peter. Er comiliert jetzt ohne Warnmeldung... Gruß Dirk
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.