And*_*ant 4 c c++ visual-studio
Visual Studio编译器似乎没有在签名/未签名的分配上发出警告,仅在比较时发出警告.例如,下面的代码将在if语句中生成警告,但不会在初始分配上生成警告.
反正有没有让它抓住这些?我已经在W4了,但是想(希望)可能还有其他的设置.
谢谢,
int foo(void)
{
unsigned int fooUnsigned = 0xffffffff;
int fooSigned = fooUnsigned; // no warning
if (fooSigned < fooUnsigned) // warning
{
return 0;
}
return fooSigned;
}
Run Code Online (Sandbox Code Playgroud)
更新:
Quamrana是对的,这是由警告4365控制的,即使在W4,它也默认关闭.但是,您可以为给定的警告级别明确启用它,如此;
#pragma warning (4 : 4365)
Run Code Online (Sandbox Code Playgroud)
结果如何;
warning C4365: 'initializing' : conversion from 'unsigned int' to 'int', signed/unsigned mismatch
Run Code Online (Sandbox Code Playgroud)