kmo*_*ort 7 c c++ enums struct
这是由离开公司的人写的.我看不出有任何理由这样做,我很好奇我是否有遗漏的东西.
enum thing_type_e
{
OPTION_A = 0,
OPTION_B,
OPTION_C,
OPTION_D
};
struct thing_type_data_s
{
enum_type_e mVariable;
};
Run Code Online (Sandbox Code Playgroud)
我认为他可能会在结构中添加更多内容,但在查看它是如何使用后,我不这么认为.
除非"他要为结构添加更多内容",为什么要在结构中打包单个枚举?我有没有想到的动机?
更新:
正如评论中所说,他以这种方式使用它:
void process_thing_type(thing_type_data_s* ParamVariable)
{
local_variable = ParamVariable->mVariable;
...
}
Run Code Online (Sandbox Code Playgroud)
这最初是用GCC 3.3.5构建的,如果它有任何区别的话.
jua*_*nza 13
可能要强制执行某种类型的安全.旧式枚举可以隐式转换为整数类型,但这并不总是可取的.除此之外,他们还没有人.
C++ 11添加了作用域枚举(或"类"枚举)来解决这两个问题.
这是一个例子:
void foo(int) {}
int main()
{
foo(OPTION_A); // OK
thing_type_data_s s = { OPTION_A };
foo(s); // Error
}
Run Code Online (Sandbox Code Playgroud)