c++ - 如果变量未初始化,Visual Studio 2017 不会生成任何警告?

标签 c++ visual-studio initialization clang warnings

Visual Studio 的问题和变量未初始化时的警告

我尝试过其他编译器,例如 Clang。 Clang 能够生成警告。

//clang 3.8.0
//MSVS 2017
#include<iostream>
using namespace std;

class dummy
{
public:
    void dummyFunction()
   {
        static_cast<int>(m_DummyVariable);
   }
private:
    double m_DummyVariable;
};

int main()
{
    dummy obj;
    double outside;
    static_cast<int>(outside);
    obj.dummyFunction();
    return 0;
}

我预计会收到三个警告,因为在线 clang 能够做到这一点。但是,在 Visual Studio 中,无论我在项目属性中设置的警告级别(1、2、3、4 或所有警告选项)如何,我都无法收到任何警告。我是否必须更改项目的任何属性?

最佳答案

如果您右键单击您的项目并点击属性,转到底部并单击代码分析。将规则集更改为 Microsoft All Rules 以及勾选在构建时运行代码分析的框,都会对我显示警告。 值得注意的是,只要我将外部变量发送到标准输出,Visual Studio 就会引发警告和错误。

关于c++ - 如果变量未初始化,Visual Studio 2017 不会生成任何警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56649761/

相关文章:

c++ - 构造函数/析构函数计数不匹配

java - 最小化 do ... while 循环中变量的范围 [Java] - 错误 : Symbol cannot be found

c++ - 初始化结构中数组的值

c++ - 从 int 转换为 int32

visual-studio - 使用 Visual Studio 构建自定义目标

c# - 通过代码使用 excel 导入向导?

Java 多维数组初始值设定项

c++ - 为什么指向指针的取消引用指针的 std::cout 导致 -fsanitize=address 提示?

c++ - Unrestricted unions 是否与 C 兼容?

c# - C# 和 C++ 之间的双工 NamePipe