Autor Thema: Verständnisproblem mit einer GCC-Fehlermeldung  (Gelesen 2745 mal)

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« 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;
};

Daemon

  • Beiträge: 8
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 04. August 2004, 19:48 »
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.
jmp far away

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #2 am: 04. August 2004, 19:57 »
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?
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 04. August 2004, 21:18 »
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...

gurru

  • Beiträge: 42
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 04. August 2004, 23:22 »
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

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #5 am: 05. August 2004, 00:34 »
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^^
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 05. August 2004, 07:24 »
Danke, für eure hilfe :)

@Roshl Hm, das schon aber solange er irgendwie funktioniert...

JensFZ

  • Beiträge: 96
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 05. August 2004, 08:20 »
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.
 

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 05. August 2004, 09:08 »
Schon klar, ich wollte ja nur fragen was mit dieser Warnung gemeint ist um eventuelle Fehlerquellen zu kennen.

 

Einloggen