Visual Studioコンパイラは、署名された/割り当てられていない割り当てでは警告のようには見えません。たとえば、以下のコードでは、ifステートメントでは初期アサインメントではなく警告が生成されます。VSコンパイラは符号付き/符号なし割り当てをキャッチしますか?
これをキャッチするにはどうしてですか?私はすでにW4にいますが、別の場所があるかもしれないと思っていました。
おかげで、
int foo(void)
{
unsigned int fooUnsigned = 0xffffffff;
int fooSigned = fooUnsigned; // no warning
if (fooSigned < fooUnsigned) // warning
{
return 0;
}
return fooSigned;
}
更新:
Quamranaが、これはさえW4で、デフォルトでオフであるように思われる4365の警告によって制御され、権利です。ただし、指定された警告レベルで明示的に有効にすることができます。
#pragma warning (4 : 4365)
です。
warning C4365: 'initializing' : conversion from 'unsigned int' to 'int', signed/unsigned mismatch
警告をオンにする#pragmaがあることはわかりませんでした。 #pragmaの問題は、警告が必要なすべてのモジュールで繰り返す必要があることです。 – quamrana