C 结构中的空枚举是否会创建未命名的字段?

逆向工程 艾达 反编译 C
2021-07-03 12:53:50

当我遇到一些奇怪的行为时,我正在用 IDA 解析一些修改过的 C++ 头文件。想象一下,我们有一个这样的结构(存储在 C 头文件中):

struct S
{
    enum {EN0, EN1};

    int m1;
} ;

当我用 IDA Pro 解析它时,创建的类型似乎威胁到第一个未命名的枚举作为结构内的数据成员。我在想 - 在这种情况下这是正确的行为吗?

我在在线 C 编译器上测试了这个,它似乎没有将内部的枚举struct S作为其数据的一部分(在这里- 我测试了S其中只有枚举时的sizeof并且它的大小为 0)。

1个回答

它只是 ENUM 的定义,没有声明。

试试这个:

struct S
{
    enum {EN0, EN1} myEnum;

    int m1;
} ;

现在我们有两个整数。