如何忽略MSVC中未初始化的变量错误

par*_*ara 6 c++ compilation visual-studio

我遇到MSVS编译器问题,我有以下代码:

if (!list) {
    *type = raw_data[*i++];
    ptr = (char*) &size;
    ptr[1] = raw_data[*i++];
    ptr[0] = raw_data[*i++];
    name = new char[size+1];
    memcpy (name, raw_data+*i, size);
    name[size] = '\0';
    *i += size;
}
Run Code Online (Sandbox Code Playgroud)

然后:

if (!list) {
    s->name = name;
    s->name_size = size;
}
Run Code Online (Sandbox Code Playgroud)

list的值在这个函数中没有改变,但由于这个错误,我无法编译代码:

错误1错误C4703:使用了未初始化的本地指针变量'name'

我觉得这不是一个警告,而是一个错误令人难以置信的烦恼.将bool更改为const bool也无济于事.有人知道如何在Visual Studio中忽略此特定错误,但仍显示其他错误/警告?

Ala*_*kes 11

我怀疑你正在通过编译器/sdl选项,它告诉它将4703(以及其他各种事物)视为错误而不是警告.

在对安全性存在偏执的情况下,将此视为错误是有意义的 - 编译器无法证明您所做的事情是安全的,因此它不会让代码通过.如果你不想那样,请关闭/sdl.


zar*_*zar 5

SDL checks在Visual Studio 2015中创建新项目(向导)时,会有一个复选框。如果启用此复选框,Visual Studio将报告未初始化的变量作为警告,作为潜在的其他事情的一部分,更多信息请参见此处

如果您已经有一个启用SDL检查的项目,则可以从项目属性中禁用它,如下面的屏幕快照所示。这样,您不必处理更改任何命令行参数。

在此处输入图片说明