Mfc Visual Studio 2019正在发出有关结构中包含没有默认值的变量的警告

Mfc Visual Studio 2019正在发出有关结构中包含没有默认值的变量的警告,mfc,visual-studio-2019,Mfc,Visual Studio 2019,以这个结构定义为例: typedef结构tagReferenceMWB { COleDateTime datStartDate; COleDateTime-datEndDate; COleDateTime datFirstMonday; COleDateTime日期:上周一; CString strFileMWB; 单词wCount; 布尔引用; 布尔b改良; }S_参考_MWB; VS2019中的编译器发出警告: 既然我们不能在结构定义中指定默认值,我们如何解决这个问题 更新 根据所提供答

以这个结构定义为例:

typedef结构tagReferenceMWB
{
COleDateTime datStartDate;
COleDateTime-datEndDate;
COleDateTime datFirstMonday;
COleDateTime日期:上周一;
CString strFileMWB;
单词wCount;
布尔引用;
布尔b改良;
}S_参考_MWB;
VS2019中的编译器发出警告:

既然我们不能在结构定义中指定默认值,我们如何解决这个问题

更新 根据所提供答案中的注释,我检查了我的项目设置:

我的项目在10年前开始使用,并且此设置似乎是空的。我不知道留白的意义是什么?以下是我的选择:


将值更改为C++14C++17会产生什么重大影响?IE.会影响它运行的操作系统吗?C++中的

,<代码>结构> <代码>与<代码>类< /> >(除了默认访问修饰符之外)。您可以通过提供默认构造函数来分配默认值。如果您使用的是C++11,还可以为非静态、非常量类成员使用类内初始值设定项,例如:

typedef struct tagReferenceMWB
{
    // ...
    WORD         wCount{ 0 };
    bool         bReferenced{ false };
    bool         bModified{ false };

} S_REFERENCE_MWB;


谢谢在哪里可以找到VisualStudio中编译的C++版本?这是从项目设置中获得的,在C++语言下。如果您使用的是Visual Studio 2019,则默认为C++14。只需尝试使用类内初始化进行编译。如果它可以编译,那么您使用的是C++11或更高版本。如果它不提供默认构造函数:
tagReferenceMWB{tagReferenceMWB():wCount(0)、brereferenced(false)、bModified(false){}/*结构成员列表*/}
。它编译时没有错误,所以我使用的是C++11或更高版本。我可能会尝试将该设置更改为C++ 14。看看会发生什么。更改语言标准对编译代码将要运行的平台没有影响。目标平台通过预处理器符号(请参阅)以及正在使用的工具集进行控制。@IInspectable,谢谢。最后我把它改成了C++17。仍然编译没有错误模式是不必要的。这是C语言的一个保留,如果您想创建
tagX
的实例,您必须编写
struct tagX。在C++中,你可以简单地说“代码> TAXX;code>,而不重复
struct
关键字。更多历史信息:和。
typedef struct tagReferenceMWB
{
    // ...
    WORD         wCount{ 0 };
    bool         bReferenced{ false };
    bool         bModified{ false };

} S_REFERENCE_MWB;
typedef struct tagReferenceMWB
{
    // ...
    WORD         wCount{};
    bool         bReferenced{};
    bool         bModified{};

} S_REFERENCE_MWB;