Gast
#4336329
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 ?
|
Anzeige
|
strcpy Funktion für XC32 MPLABX Microchip
Gast
#4336329
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 ?
Gast
#4336330
Dirk F schrieb: > Wer kann helfen ? was bedeutet "Geht nicht" (das mit dem strcpy)?
Gast
#4336345
Tja der Compiler meckert halt, weil irgend ein include wohl fehlt...
Gast
#4336346
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 )
Gast
#4336364
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
Gast
#4342269
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.
Gast
#4342284
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.
Gast
#4342297
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.
Gast
#4342424
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.
Gast
#4342471
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....???
Gast
#4342488
DirkF schrieb: > Ist das so richtig ? > > strcpy ( (char) testpuffer,"_Meldetext"); > strcpy ( (unsigned char) testpuffer,"_Meldetext"); > strcpy ( (signed char) testpuffer,"_Meldetext"); nein, das fehlt der *
Gast
#4342521
....und wo kommt das * hin ?
Gast
#4342527
DirkF schrieb: > ....und wo kommt das * hin ?
Gast
#4342542
Super Danke Peter. Er comiliert jetzt ohne Warnmeldung... Gruß Dirk Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|