Gibt es ein Flag für gcc, dass Konvertierungen von einem langen zu einem kurzen eine Warnung über einen möglichen Datenverlust generieren?Gibt es eine gcc 4.2-Warnung, die Visual Studio in Bezug auf einen möglichen Datenverlust ähnelt?
Ich arbeite an einer C++ - Anwendung, die für Visual Studio (2005) und GCC 4.2 (für Mac OS X) kompiliert wird.
Die Warnungen, dass Visual Studio druckt dieses Muster folgen:
: warning C4244: 'argument' : conversion from 'long' to 'short', possible loss of data
Ich habe -Wconversion versucht, aber das ist nicht ganz das, was ich suche. Das einzige, was ich bis jetzt finden konnte, ist eine experimentelle Flagge, -Woercion, die mit GCC 4.3 in Verbindung gebracht wird (was ich nicht weiß, ob wir überhaupt noch investieren wollen).
22. April 2009 @ 11:00 EST Bearbeiten: Um zu verdeutlichen, möchte ich diese Warnung sehen. Wir haben Code, wo wir wissen möchten, wann ein Datenverlust auftreten würde. Wenn ich den Code haben:
unsigned long value1 = LONG_MAX;
std::cout << "value1: " << value1 << std::endl;
unsigned short value2 = value1;
std::cout << "value2: " << value2 << std::endl;
Ich erhalte diese erwartete Ergebnis:
Wert1: 2147483647
Wert2: 65535
In unserem Code, wir haben spezielle stellt fest, dass der Zwang ausgeübt wird und warnen uns, wenn der ausgeführte Code zu einem Datenverlust führen würde. Wir haben die Orte in unserer großen Codebasis mithilfe der Warnungen von Visual Studio gefunden.
Gibt es eine Möglichkeit, diese Warnungen in gcc 4.2 zu generieren?
Für eine mögliche Datenverlustvalidierung versuchen Sie '-WShorten-64-to-32'. '-Wconversion' prüft auch auf signedness errors (könnte Overkill sein). – rustyx
'-WShorten-64-to-32' wird von GCC nicht akzeptiert, nur von Clang. – Andy