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++14或C++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++中,代码>模式是不必要的。这是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;