首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VS11代码分析提示?

VS11代码分析提示?
EN

Stack Overflow用户
提问于 2012-03-10 11:06:59
回答 2查看 482关注 0票数 0

在VS11中运行C++的代码分析时,我得到了很多误报。例如,我有几十个开关,它提示我的指针可能为空。开关中的所有情况(至少在一种情况下)都设置了指针,默认情况下调用我的函数,该函数抛出一个断言(0)和异常。我猜因为断言和异常是在一个方法中,所以它没有意识到指针不可能为空。我如何提示或修复它,这样就不会出现像这样的假阳性?

EN

回答 2

Stack Overflow用户

发布于 2012-03-10 14:47:58

尝试在开关中使用_Analysis_assume_(FALSE),它会向编译器暗示无法访问的代码。

您还可以修饰抛出且不随_Analysis_noreturn_一起返回的函数。

票数 2
EN

Stack Overflow用户

发布于 2012-03-10 11:30:39

如果默认情况下调用的方法没有返回任何内容,您可以尝试让它返回一个“伪”null值,该值将在默认情况下分配给指针。

代码语言:javascript
复制
Type* MyClass::methodCalledInDefaultCase()
{
    pointer = 0;
    assert(0);
    throw Exception;
    return 0; // Hope this doesn't cause unreachable code warning
}

void MyClass::myMethod()
{
    pointer = 0;
    switch(whatever)
    {
        case foo:
            ...

        case bar:
            ....

        default:
            pointer = methodCalledInDefaultCase();
            break;
    }
}

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9643599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档