这是由离开公司的人写的。我看不出有任何理由这样做,如果有什么我想念的话,我很好奇。
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构建的。
答案 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中我会有意义。