为什么在结构中包装单个枚举

Why package a single enum in a struct?

本文关键字:单个 枚举 包装 结构 为什么      更新时间:2023-10-16

这是由离开公司的人写的。我看不出有任何理由这样做,很好奇是否有我缺少的东西。

enum thing_type_e
{
   OPTION_A = 0,
   OPTION_B,
   OPTION_C,
   OPTION_D
};
struct thing_type_data_s
{
   enum_type_e mVariable;
};

我以为他可能会增加结构的更多信息,但是在看如何使用之后,我不这么认为。

禁止"他要在结构中添加更多",为什么在结构中包装单个枚举?我没有想到一些动力吗?

更新:

如评论中所要求的,他以这种方式使用了它:

void process_thing_type(thing_type_data_s* ParamVariable)
{
    local_variable = ParamVariable->mVariable;
    ...
}

这最初是用GCC 3.3.5构建的。

可能要执行某种类型的安全性。老式的枚举是隐式转换为积分类型的,这并不总是可取的。除此之外,它们是毫无意义的。

c 11添加了范围枚举(或"类"枚举)来解决这两个问题。

这是一个示例:

void foo(int) {}
int main()
{
  foo(OPTION_A);  // OK
  thing_type_data_s s = { OPTION_A };
  foo(s);  // Error
}

是否还有其他类型的成员类型的结构,但否则有所不同吗?他可能会以基本的方式使用struct thing_type_data_s。但是谁知道,您将这个问题标记为C和C 。我至少在C中很有意义。