Es geht um AVR-Studio mit WINAVR(gcc) strcpy (ssid,"abc"); warning: passing argument 1 of 'strcpy' discards qualifiers from pointer target type dann habe ich folgendes versucht: strcpy ((const char*)ssid,"abc"); // ging auch nicht
Prototype: char strcpy(char *s1, const char *s2); Wenn der Compiler Argument 1 bei dir anmeckert, dann ist ssid kein char* Oliver
>strcpy ((const char*)ssid,"abc"); // ging auch nicht
Um die Warnung zu beseitigen musst Du die übergebene Variable so casten,
dass sie zu dem Parameter der Funktion passt. Die erneute ausdrückliche
Angabe der Qualifzierer der Variable nützt Dir nichts. Sie ruft ja
gerade die Warnung hervor.
Qualifier ist das "const" Qualifier bei pointern beziehen sich immer auf den Zieltyp. Hier macht das auch wenig Sinn, weil sich der Inhalt des Ziels ja auch verändern soll. Const bei ssid* weglassen oder einmalig den Wert zuweisen statt strcpy.
>Qualifier bei pointern beziehen sich immer auf den Zieltyp. Hier macht >das auch wenig Sinn, weil sich der Inhalt des Ziels ja auch verändern >soll. Das muss man doch noch etwas differenzieren, aber mein Rat von oben macht tatsächlich keinen grossen Sinn, da der Inhalt auf den der Zeiger zeigt verändert werden soll. const kann sich sowohl auf den Zeiger selbst als auch auf den am Ort des Zeigers stehenden Inhalt beziehen. Um das zu unterscheiden, ist die position des "const" in der Deklaration entscheidend. Tatsächlich macht const char * x den Inhalt auf den X zeigt konstant aber nicht den Zeiger. Hingegen ist bei char * const y den Zeiger konstant hingegen aber nicht den Inhalt.
!Gast schrieb: > (Vergiss es, zu langsam) Nicht wirklich. Das vergessen mein ich. Die Fehlermeldung deutet nämlich auf ein ernsthaftes Problem hin. Wenn er bei strcpy (ssid,"abc"); im ersten Argument ein const wegcasten muss, dann kann das tatsächlich ein schwerwiegendes Problem sein! Ein const wegcasten zu müssen, ist des öfteren tatsächlich gefährlich und sollte nicht auf die leichte Schulter genommen werden. Denn letztendlich hat man dann seinen Compiler angelogen! Der verlässt sich nämlich darauf, dass die Dinge, die man ihm als const angegeben hat, auch tatsächlich konstant sind und ihren Wert nicht über dubiose Praktiken ändern. Daher: mehr Code! Dann kann man entscheiden, ob das wegcasten eines const eine Kavaliersdelikt ist, oder ob da mehr dahintersteckt.
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.