当前位置:  开发笔记 > 编程语言 > 正文

让VS编译器捕获签名/未签名的分配?

如何解决《让VS编译器捕获签名/未签名的分配?》经验,为你挑选了1个好方法。

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可以发出大量警告,因此您可能在查看警告时遇到一些麻烦,但确实如此.



1> quamrana..:

您需要启用警告4365来捕获分配.

这可能很棘手 - 您需要启用所有警告 - 使用/ Wall可以发出大量警告,因此您可能在查看警告时遇到一些麻烦,但确实如此.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有