【问题标题】:typedef in C difference?C中的typedef区别?
【发布时间】:2013-05-24 13:13:17
【问题描述】:

C语言中以下和以下有什么区别:

typedef enum month_t
{
jan,
feb,
march
}month;

typedef enum
{
monday,
tuesday,
wednesday
}day;

在发布此问题之前,我阅读了以下内容:What is a typedef enum in Objective-C?

但是不太明白……

【问题讨论】:

  • 一个定义月份,其他几天。
  • 在第一种情况下,您可以省略month_t,然后两者将采用相同的方式。 month_t 只是 C 语言中可以使用的另一种类型标记,因此您可以将月份声明为 enum month_t my_month; 或只是 month my_month;。白天,您只能按照当前定义的方式执行day my_day;
  • @KerrekSB:这在 C 语言中实际上并没有什么不同;它们之间存在同构。对它的用户来说,这只是 C 语言之外的区别。

标签: c typedef


【解决方案1】:

第一个还引入了一个枚举标签,表示枚举可以这样使用:

enum month_t first = jan;
/* or */
month second = feb;

第二个没有,因此枚举仅适用于typedef:ed 名称day

当然,枚举本身也不同,但这很明显。

【讨论】:

  • 是的(赞成)。换句话说,第一个声明了一个名为“month_t”的枚举,并定义了一个名为“month”的别名。第二个声明一个匿名枚举并键入一个名为“day”的别名。
猜你喜欢
  • 2012-05-31
  • 1970-01-01
  • 2013-08-19
  • 2017-05-13
  • 2017-09-02
  • 2011-12-01
  • 1970-01-01
相关资源
最近更新 更多