Visual Studio编译器似乎没有在签名/未签名的分配上发出警告,仅在比较时发出警告.例如,下面的代码将在if语句中生成警告,但不会在初始分配上生成警告.
反正有没有让它抓住这些?我已经在W4了,但是想(希望)可能还有其他的设置.
谢谢,
int foo(void) { unsigned int fooUnsigned = 0xffffffff; int fooSigned = fooUnsigned; // no warning if (fooSigned < fooUnsigned) // warning { return 0; } return fooSigned; }
更新:
Quamrana是对的,这是由警告4365控制的,即使在W4,它也默认关闭.但是,您可以为给定的警告级别明确启用它,如此;
#pragma warning (4 : 4365)
结果如何;
warning C4365: 'initializing' : conversion from 'unsigned int' to 'int', signed/unsigned mismatch
quamrana.. 6
您需要启用警告4365来捕获分配.
这可能很棘手 - 您需要启用所有警告 - 使用/ Wall可以发出大量警告,因此您可能在查看警告时遇到一些麻烦,但确实如此.
您需要启用警告4365来捕获分配.
这可能很棘手 - 您需要启用所有警告 - 使用/ Wall可以发出大量警告,因此您可能在查看警告时遇到一些麻烦,但确实如此.