Der Visual Studio-Compiler scheint bei signierten/nicht signierten Zuweisungen nur bei Vergleichen zu warnen. Zum Beispiel erzeugt der folgende Code eine Warnung für die if-Anweisung, aber nicht für die anfänglichen Zuweisungen.Machen VS-Compiler signierte/unsigned Zuweisungen?
Gibt es trotzdem, um es zu fangen? Ich bin schon bei W4, dachte aber (gehofft), es könnte irgendwo anders sein.
Danke,
int foo(void)
{
unsigned int fooUnsigned = 0xffffffff;
int fooSigned = fooUnsigned; // no warning
if (fooSigned < fooUnsigned) // warning
{
return 0;
}
return fooSigned;
}
Update:
Quamrana richtig ist, wird dies durch Warn 4365 gesteuert, die standardmäßig aus sein scheint, auch bei W4. Sie können es jedoch für eine bestimmte Warnstufe explizit aktivieren.
#pragma warning (4 : 4365)
Was ergibt;
warning C4365: 'initializing' : conversion from 'unsigned int' to 'int', signed/unsigned mismatch
Ich wusste nicht, dass es ein #pragma gab, Warnungen zu aktivieren. Das Problem mit der # Pragma ist, dass es in jedem Modul wiederholt werden muss, wo Sie die Warnung möchten. – quamrana