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

时间:2014-01-23 20:32:49

标签: c++ c struct enums

这是由离开公司的人写的。我看不出有任何理由这样做,如果有什么我想念的话,我很好奇。

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构建的。

2 个答案:

答案 0 :(得分:13)

可能会强制执行某种类型的安全措施。旧式枚举可以隐式转换为整数类型,但这并不总是可取的。除此之外,他们还没有人。

C ++ 11添加了作用域枚举(或“类”枚举)来解决这两个问题。

以下是一个例子:

void foo(int) {}

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

答案 1 :(得分:0)

是否有其他结构首先使用相同类型的成员但不同的结构?他可能正在以基类y方式使用struct thing_type_data_s。但是谁知道,你把问题标记为C和C ++。至少在C中我会有意义。