错误 C7626:未命名 class 用于 typedef 名称不能声明非静态数据成员以外的成员,

Error C7626: Unnamed class used in typedef name cannot declare members other than non-static data members,

我在VS2022中使用C++构建一个项目。我必须包含一个来自名为 eve.h 的 sdk 的头文件。我已将包含此文件的包含文件夹添加到项目属性中。 然而,当我构建这个项目时,我收到了一些 C7626 错误,指出以下内容,并指向 eve.h 文件的某些行。

Error   C7626   unnamed class used in typedef name cannot declare members other than non-static data members, member enumerations, or member classes (compiling source file main.cpp)       

错误指向的其中一行中的代码是这样的:

typedef struct
{
    int isOpen;

    int clearAll;
    int clearSome;
    int buttonFifty=-1;
    int buttonTwenty=-1;

}ALL_Buttons;

这是sdk中的头文件,不是我的代码。而且我以前从未遇到过这个错误。我该如何解决这个问题?谢谢

从 Microsoft documentation 开始,您的 struct 没有名称,但在 typedef 中,其中一些成员已在线初始化。 下面的代码在 VS 2022 中可以正常编译

typedef struct 
{
    int isOpen;

    int clearAll;
    int clearSome;
    int buttonFifty;// = -1;
    int buttonTwenty;// = -1;

}ALL_Buttons;
int main()
{

    return 0;
}

编译器根据 C++ 版本发出警告或错误。

我通过给 sdk 中的结构命名解决了这个问题。如下:

之前:

typedef struct
{
    int isOpen;

    int clearAll;
    int clearSome;
    int buttonFifty = -1;
    int buttonTwenty = -1;
}

之后:

typedef struct a
{
    int isOpen;

    int clearAll;
    int clearSome;
    int buttonFifty = -1;
    int buttonTwenty = -1;
}