关于结构的警告 C26495

Warning C26495 on structures?

本文关键字:警告 C26495 结构 于结构      更新时间:2023-10-16

在过去的一二十年里,我一直在使用C#/.NET,但是正在为客户端更新旧的C++/MFC应用程序。我知道自从我上次与C++合作以来,很多事情都发生了变化,但这一次让我感到震惊。

我有以下结构:

typedef struct _FILTERINFO {
    int nCustomerID;
    CString sCustomerName;
} FILTERINFO, *LPFILTERINFO;

Visual Studio 2019给了我一个警告:

警告 C26495 变量"_FILTERINFO::n客户 ID"未初始化。始终初始化成员变量(类型 .6(。

那么,这里的问题是什么,我将如何初始化变量?如您所见,我没有构造函数。我现在不需要它们作为结构,是吗?

注意:进一步研究这个问题,我看到我的应用程序定义了其他struct由于某种原因没有收到相同的警告。它似乎特定于大约两三个声明。

删除 typedef,你正在做C++,所以改为写:

struct FILTERINFO 
{ 
  int nCustomerID=0; 
  CString sCustomerName; 
};

typedef FILTERINFO* LPFILTERINFO; 

通常最好不要做指针的typedef,而是使用FILTERINFO*因为有时在与const一起使用时会出现意外的行为