Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VS11代码分析提示? 在VS11中运行C++代码分析时,我得到了很多误报。例如,我有几十个开关,它说我的指针可能是空的。开关中的所有情况(至少在一种情况下)都设置了指针,默认值调用my函数,该函数抛出断言(0)和异常。我想既然assert和exception在一个方法中,它就没有意识到指针不可能为null。如何提示或修复它以避免出现像这样的假阳性?_C++_Visual Studio 2012_Static Code Analysis - Fatal编程技术网

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

VS11代码分析提示? 在VS11中运行C++代码分析时,我得到了很多误报。例如,我有几十个开关,它说我的指针可能是空的。开关中的所有情况(至少在一种情况下)都设置了指针,默认值调用my函数,该函数抛出断言(0)和异常。我想既然assert和exception在一个方法中,它就没有意识到指针不可能为null。如何提示或修复它以避免出现像这样的假阳性?,c++,visual-studio-2012,static-code-analysis,C++,Visual Studio 2012,Static Code Analysis,如果默认情况下调用的方法没有返回任何内容,您可以尝试使其返回一个“假”空值,该值将在默认情况下分配给指针 Type* MyClass::methodCalledInDefaultCase() { pointer = 0; assert(0); throw Exception; return 0; // Hope this doesn't cause unreachable code warning } void MyClass::myMethod() {

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

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;
    }
}

希望这有帮助。

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

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;
    }
}
希望这有帮助。

尝试在开关中使用,它会向编译器提示无法访问的代码

您还可以修饰抛出而不返回的函数。

尝试在开关中使用,它会向编译器提示无法访问的代码


您还可以装饰抛出而不返回的函数。

啊哈。好的,我相信这会起作用,但我也可以制作一个fakeptr()模板,它返回一个指针来愚弄它(类似于伪造但偶尔有用的auto_cast)啊哈。好的,我相信这会起作用,但我也可以制作一个fakeptr()模板,返回一个指针来愚弄它(类似于伪的但偶尔有用的auto_cast)