Lowlevel
OffZone => Offtopic => Thema gestartet von: Another Stupid Coder am 04. August 2004, 14:15
-
Hallo,
Ich bekomme jedesmal wenn ich die String-Libary compillieren will folgenden Fehler:
src/string.cpp:68: warning: suggest parentheses around assignment used as truth
(diesen Fehler erhalte ich bei mehreren fast identischen Zeilen).
Hier der Code aus der Datei "string.cpp":
char *String::Copy(char *String2)
{
while(*ContentString++ = *String2++); // Das hier ist die Zeile 68
return ContentString;
};
-
Das ist kein Fehler, sondern eine Warnung: gcc erkennt das Statement als eine Zuweisung, die immer true ist, an und sagt, dass es möglicherweise ein Fehler ist.
-
also entweder du hast eine funktion geschrieben die while heisst oder da steht totaler blödsinn oder ich wusste noch nicht das while ohne geschweiften klammerblock auskommt und ein semikolon hinten hat.(letzes beides eigentlich das selbe) was trifft denn zu?
-
Das While sorgt ja nur dafür das der alle Zeichen des Strings durchlaufen werden und String1 dabei den Buchstaben von String2 zugewiesen bekommt...aber bei unterschiedlicher Länge läuft das denke ich ohnehin nicht wie ich gerade bemerkte...
-
hi
Der gcc gibt eine Warnung aus, wenn bei einer Bedinung eine Zuweisung steht.
Wenn du die Warnung nicht mehr sehen kannst (oder sie dich stört) , setz um die Klammer noch ein Paar klammern:
while ((...))
mfg gurru
-
Also wäre ich ein Compiler würde ich mit der Anweisung nichts anfangen können. Oder ich würde so machen solange die beiden strings gleich sind kopiere ich sie ineinander aber das macht keinen sinn^^ Also für mich is das einfach nur seltsamer code^^
-
Danke, für eure hilfe :)
@Roshl Hm, das schon aber solange er irgendwie funktioniert...
-
Hiho
Also Für mich macht diese Anweisung sinn.
*ContentString++ = *String2++
bedeutet ja, dass er ein zeichen aus String2 nach ContentString kopiert. Durch das ++ dahinter springt er ein Zeichen weiter. Wenn das letzte Zeichen kopiert wurde ("\0"), ist in den While Kopf die bedingung False (da ja \0 dort steht, auch wenn es eine Zuweisung ist aber beide seiten sind \0.).
Man beachte auch, dass es eine Warnung und kein Fehler ist. VC++ Gibt ne warnung aus, wenn man ne Variable definiert aber nicht benutzt hat. Die meisten Warnungen sind eigentlich nur hinweise, dass ein Fehler auftreten könnte aber nicht muss.
-
Schon klar, ich wollte ja nur fragen was mit dieser Warnung gemeint ist um eventuelle Fehlerquellen zu kennen.