使用和不使用'typedef'声明枚举之间有什么区别?

fre*_*ass 15 c++ enums typedef declaration

在C++中声明枚举的标准方法似乎是:

enum <identifier> { <list_of_elements> };
Run Code Online (Sandbox Code Playgroud)

但是,我已经看到了一些声明,例如:

typedef enum { <list_of_elements> } <identifier>;
Run Code Online (Sandbox Code Playgroud)

如果存在,它们之间有什么区别?哪一个是正确的?

Chr*_*utz 19

C兼容性.

在C中union,structenum类型必须与之前的相应关键字一起使用:

enum x { ... };

enum x var;
Run Code Online (Sandbox Code Playgroud)

在C++中,这不是必需的:

enum x { ... };

x var;
Run Code Online (Sandbox Code Playgroud)

所以在C语言中,懒惰的程序员经常使用typedef以避免重复:

typedef enum x { ... } x;

x var;
Run Code Online (Sandbox Code Playgroud)

  • 事实上,这是一个使一个优秀的程序员:)的品质之一:) (5认同)
  • 只是想注意我在这里不是讽刺地使用"懒惰". (3认同)
  • 不耐烦和傲慢是其他人. (2认同)