Visual Studio 2019 年针对具有没有默认值的变量的结构发出警告
Visual Studio 2019 is raising warnings about structures having variables without default values
采用这个结构定义:
typedef struct tagReferenceMWB
{
COleDateTime datStartDate;
COleDateTime datEndDate;
COleDateTime datFirstMonday;
COleDateTime datLastMonday;
CString strFileMWB;
WORD wCount;
bool bReferenced;
bool bModified;
} S_REFERENCE_MWB;
VS2019 中的编译器发出警告:
Warning C26495 Variable 'CChristianLifeMinistryDefines::tagReferenceMWB::bModified' is uninitialized. Always initialize a member variable (type.6). Meeting Schedule Assistant d:\my programs19\meetschedassist\meeting schedule assistant\christianlifeministrydefines.h 348
Warning C26495 Variable 'CChristianLifeMinistryDefines::tagReferenceMWB::bReferenced' is uninitialized. Always initialize a member variable (type.6). Meeting Schedule Assistant d:\my programs19\meetschedassist\meeting schedule assistant\christianlifeministrydefines.h 348
Warning C26495 Variable 'CChristianLifeMinistryDefines::tagReferenceMWB::wCount' is uninitialized. Always initialize a member variable (type.6). Meeting Schedule Assistant d:\my programs19\meetschedassist\meeting schedule assistant\christianlifeministrydefines.h 348
由于我们不能在结构定义中分配默认值,我们如何解决这个问题?
更新
根据提供的答案中的评论,我检查了我的项目设置:
我的项目在 10 多年前就开始了,这个设置似乎是空的。我不知道这个留空的意义是什么?这些是我的选择:
将值更改为 C++14 或 C++17 的重大影响是什么? IE。它会影响它可以 运行 在哪些操作系统上运行吗?
在 C++ 中,struct
与 class
相同(默认访问修饰符除外)。您可以通过提供默认构造函数来分配默认值。如果您使用的是 C++11,您还可以对非静态、非常量 class 成员使用 in-class 初始值设定项,例如:
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;
采用这个结构定义:
typedef struct tagReferenceMWB
{
COleDateTime datStartDate;
COleDateTime datEndDate;
COleDateTime datFirstMonday;
COleDateTime datLastMonday;
CString strFileMWB;
WORD wCount;
bool bReferenced;
bool bModified;
} S_REFERENCE_MWB;
VS2019 中的编译器发出警告:
Warning C26495 Variable 'CChristianLifeMinistryDefines::tagReferenceMWB::bModified' is uninitialized. Always initialize a member variable (type.6). Meeting Schedule Assistant d:\my programs19\meetschedassist\meeting schedule assistant\christianlifeministrydefines.h 348 Warning C26495 Variable 'CChristianLifeMinistryDefines::tagReferenceMWB::bReferenced' is uninitialized. Always initialize a member variable (type.6). Meeting Schedule Assistant d:\my programs19\meetschedassist\meeting schedule assistant\christianlifeministrydefines.h 348 Warning C26495 Variable 'CChristianLifeMinistryDefines::tagReferenceMWB::wCount' is uninitialized. Always initialize a member variable (type.6). Meeting Schedule Assistant d:\my programs19\meetschedassist\meeting schedule assistant\christianlifeministrydefines.h 348
由于我们不能在结构定义中分配默认值,我们如何解决这个问题?
更新
根据提供的答案中的评论,我检查了我的项目设置:
我的项目在 10 多年前就开始了,这个设置似乎是空的。我不知道这个留空的意义是什么?这些是我的选择:
将值更改为 C++14 或 C++17 的重大影响是什么? IE。它会影响它可以 运行 在哪些操作系统上运行吗?
在 C++ 中,struct
与 class
相同(默认访问修饰符除外)。您可以通过提供默认构造函数来分配默认值。如果您使用的是 C++11,您还可以对非静态、非常量 class 成员使用 in-class 初始值设定项,例如:
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;