2010-11-21 6 views
4

Ich bin eine Warnung für diese Linie erhalten:Ist gcc's -Wequence-point warning flag defekt?

e = strtol(++s, (char **)&s, 10); 

die ++s zu einer gesonderten Erklärung bewegen macht die Warnung verschwunden, aber soweit ich das sagen kann, diese Warnung ist völlig falsch. Der Wert von s wird nur einmal in der Berechnung von ++s verwendet. Die zweite Verwendung von s ist nur die Adresse zu nehmen. Gibt es etwas, das mir fehlt?

+0

Ich kann das Problem mit gcc 4.4.3 oder 4.4.5 nicht reproduzieren. Post eine vollständige Beispiel.c, die es demonstriert? – Kamal

+0

Ah, sieht so aus, als wäre es das ältere 3.x gcc auf diesem System. –

+2

Nebenbei, als Antwort und ich werde es akzeptieren, da "aktuelle gcc diese Warnung nicht generiert" ist eine gute Antwort auf meine Frage, ob die Warnung falsch war. –

Antwort

4

Neuere Versionen von gcc (4.4.3 oder 4.4.5) generieren keine Warnung für die von Ihnen gepostete Zeile. Die Generierung der Warnung scheint ein Fehler in älteren gcc-Versionen zu sein.

+2

Siehe [GCC Bug 18050] (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18050) - behoben in 4.4.0. – ugoren