Einen schönen Sonntag wünsch ich euch allen erst ein mal. Ich habe folgendes Problem. Ich will einfach 2 Char Arrays vergleichen bekomme aber beim Kompilieren eine Warnmeldung und funktioniert auch nicht. Habt ihr nen Tip? char ausschalten[] = "mach an"; const char einschalten[] = "mach aus"; //nur zum versuch mal als const if(strcmp(einschalten, TESTbuf1) == 0) PDR09 = DEC7SEG[1]; if(strcmp(ausschalten, TESTbuf1) == 0) PDR09 = DEC7SEG[0];; Warnmeldung beim Kompilieren (Softunge Workbench Fujitsu 16FX) *** d:\****\main.c(47) W1350C: argument passing incompatible pointer types: expected `const char *' actual `unsigned char *': argument 2 of `strcmp' *** d:\****\main.c(48) W1350C: argument passing incompatible pointer types: expected `const char *' actual `unsigned char *': argument 2 of `strcmp' Gruß Philipp
> Habt ihr nen Tip? Vergleich mal die Deklaration von TESTbuf1 (in Zeile 42) mit der Fehlermeldung > expected `const char *' actual `unsigned char *': argument 2 of `strcmp' ^^^^ ^^^^^^^^^^^^^ HTH
Ja das habe ich schon gesehen. Aber leider keine Idee wie ich das ändern kann. :-( Wenn ich aus unsigned char TESTbuf1[MAXBUF]; // Transmission Buffer ein const char TESTbuf1[MAXBUF]; // Transmission Buffer machen würde. Könnte ich es ja nicht mehr wärend der Kaufzeit ändern also mit Daten füllen. Oder?
if(strcmp(einschalten, (char*)TESTbuf1)... Oder TESTbuf... nicht als unsigned char..., sondern als char... deklarieren
Philipp F. schrieb: > Wenn ich aus > > unsigned char TESTbuf1[MAXBUF]; // Transmission Buffer > > ein > > const char TESTbuf1[MAXBUF]; // Transmission Buffer > > machen würde. Könnte ich es ja nicht mehr wärend der Kaufzeit ändern > also mit Daten füllen. Oder? richtig, aber das Problem ist hier nicht das const, sondern das unsigned.
> Aber leider keine Idee wie ich das ändern kann.
Du hast zwei [1] Möglichkeiten: Den Datentyp ändern oder dem Compiler
sagen, wie er es richtig(tm) hinbiegen kann.
Für zweiteres reicht ein einfacher Cast vor Ort.
HTH
[1] Warnungen sind nicht dafür da, ignoriert zu werden.
Beide-Augen-fest-verschließen-und-mit-dem-Kopf-gegen-die-Betonwand ist
also keine Alternative.
aus
> unsigned char TESTbuf1[MAXBUF]; // Transmission Buffer
machste
char TESTbuf1[MAXBUF]; // Transmission Buffer
dann noch die vor ort casten und es rennt:
if(strcmp(einschalten, (const char*)&TESTbuf1) == 0) PDR09 =
DEC7SEG[1];
Martin Wende schrieb: > char TESTbuf1[MAXBUF]; // Transmission Buffer > dann noch die vor ort casten und es rennt: Gürtel-und-Hosenträger Prinzip? Eins davon reicht, egal welches. Merkregel: Nur casten wenn nötig. Du castest nämlich sonst auch jene Fehler und Warnungen weg, die du gerne gehabt hättest.
Ich liebe die Mietglieder dieses Forums! Vielen Dank. Es funktioniert! Habe mich übrigens fürs casten vor Ort enschieden. Fehler welche noch irretierte: ...ausschalten[] = "mach an"; <- Variable passt nich zu text ;-) ...einschalten[] = "mach aus"; <- Variable passt nich zu text ;-)
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.