为什么在C++枚举定义中需要typedef

Ada*_*Lee 4 c++ gcc visual-c++

我在头文件中看到了以下内容

typedef enum Test__tag {
    foo,
    bar
} Test;
Run Code Online (Sandbox Code Playgroud)

我想知道为什么要使用typedef; 我可以用

enum Test{
    foo,
    bar
};
Run Code Online (Sandbox Code Playgroud)

是对的吗?

Bot*_*000 11

它适用于C用户.基本上当你走的typedef路上,你可以说

Test myTest;
Run Code Online (Sandbox Code Playgroud)

而当你刚刚使用时enum Test,你必须声明一个这样的变量:

enum Test myTest; 
Run Code Online (Sandbox Code Playgroud)

如果只使用C++则不需要它.所以它也可能只是由习惯于这种风格的C程序员编写的.

  • 或者它可能是C和C++代码所包含的标题. (3认同)