为什么我应该在C ++中使用typedef声明枚举?

时间:2010-09-29 00:11:20

标签: c++ enums typedef

我的代码看起来像这样:

enum EEventID {
  eEvent1,
  eEvent2,
  ...
  eEventN };

这已经过审核并更改为

typedef enum {
  eEvent1,
  eEvent2,
  ...
  eEventN } EEventID;

两者有什么区别?为什么要做出改变?当我查看this question时,唯一提到的typedef被低估了。

5 个答案:

答案 0 :(得分:11)

这两个在C ++中是相同的,但它们在C中是不一样的 - 如果你使用typedef得到C和C ++兼容的代码(因此可以在头文件中自由使用)用于C或C ++)。这是我可以看到更喜欢它的唯一原因。

答案 1 :(得分:2)

我找到了一个可能的答案here:“好吧它与C语言有关,如果你使用enum或结构是用户定义的数据类型,你需要指定{{1使用它时使用{}}或enum关键字。“

也许你的评论家是一个铁杆C编码员,而且他是出于习惯而自动完成的。

答案 2 :(得分:2)

如果公司有标准,那可能只是为了保持一致性。即使你从未在C中使用过,所以在任何地方都可以这样做。

答案 3 :(得分:2)

C ++ 中的typedef 多余
C 中,如果您想要定义枚举类型的变量,则必须如此:EEventID event;,否则您必须指定它是枚举:enum EEventID event;

答案 4 :(得分:0)

你的评论员不会从他的C ++中知道他的C.