VC .NET und RuntimeCheck auf kleineren Typ
-
Folgendes Problem:
Habe während des Debuggens obigen RuntimeCheck aktiviert.
Bei folgender Zuweisung entsteht ein Fehler:BYTE red = GetRValue( color);
Lösungsvorschlag von M$:
Run-Time Check Failure #1 - A cast to a smaller data type has caused a loss of data. If this was intentional, you should mask the source of the cast with the appropriate bitmask. For example:
char c = (i & 0xFF);
Changing the code in this way will not affect the quality of the resulting optimized code.Folgende Änderungen am Code brachten keine Verbesserung:
BYTE red = (BYTE)GetRValue( color);
BYTE red = (GetRValue( color) & 0xFF);
BYTE red = (BYTE)(GetRValue( color) & 0xFF);
BYTE red = static_cast<BYTE>(GetRValue( color) & 0xFF);Hat jemand einen Lösungsvorschlag?
-
Was ist color denn für ein Datentyp ?
-
COLORREF (entspricht DWORD)
-
Vielleicht gibt GetRValue() kein BYTE zurück und vielleicht kann man in .Net nicht einfach so downcasten (wäre komisch aber ich weiß es nicht weil ich kein vc.net habe). Probiers mal das Red ein DWORD ist.
[ Dieser Beitrag wurde am 27.02.2003 um 16:01 Uhr von Nitromaus editiert. ]
-
Möglich wäre auch dass du einfach ne hohe Sicherheitsstufe des Compilers verwendest, und er aus bestimmten Warnings gleich Errors macht
-
Wo hast du diesen Runtimecheck aktiviert. Finde das nicht.
Mit den standardeinstellungen funzt es.
-
Konfiguration -> C/C++ -> Codeerstellung -> Überprüfen von kleineren Type