2010-09-29 149 views

回答

11

这两者在C++中是相同的,但它们在C中不同 - 如果使用typedef获得C和C++之间兼容的代码(所以可以在头文件中自由使用)可能用于C或C++)。这是我喜欢它的唯一原因。

+0

感谢您的洗脱。我开始担心是否还有另一个关于C++的角色,我认为我知道但完全不知道(参见:Boost中的家伙很容易做到的模板体操) – mmr 2010-09-29 01:00:36

+4

“这两者在C++中是相同的” - 值得指出在某些实现中,调试信息可能会因为typedef实际上是匿名或随机命名的枚举而有所不同,所以调试信息可以将其记录为“EEventID”。这导致了一些人甚至更丑陋的'typedef enum Idn1 {...} Idn2;',其中一个通常通过向另一个添加前缀或后缀来形成:-( - 它并不完全解决问题,但提供了一些更可追溯的IDN。 – 2010-09-29 01:14:37

2

我发现了一个可能的答案here:“那么这是培训相关,其中,如果你使用enum或结构是用户定义的数据类型C语言中,你需要指定enumstruct关键字,而使用它。”

也许您的评论者是硬核C编码器,他会自动执行,出于习惯。

0

您的评论者不知道他的C语言来自他的C++。

2

如果公司有一个标准,它可能只是为了保持一致性。即使你从不使用C语言,在任何地方都以同样的方式进行更好。

2

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