Typedef struct vs struct? |定义差异|

时间:2014-01-16 22:13:34

标签: c struct typedef definition

以下块在 main() 之外且在每个函数(全局范围)之前

第1栏:

struct flight{
int number;
int capacity;
int passengers;
};

使用此方法,您可以创建数组,指针,变量,而不是写入}var; (仅定义此自定义数据类型的一个变量(struct flight ))

第二块:

typedef struct flight{
int number;
int capacity;
int passengers;
}flight;

声明此操作可创建数据类型航班,而无需始终编写 struct flight
我的问题是为什么typedef需要在一个块结束时第二次写入航班?
这有点令人困惑(它看起来只是该数据类型的变量)

1 个答案:

答案 0 :(得分:13)

  

我的问题是为什么typedef需要在一个块结束时第二次写入航班?

宣布:

typedef struct flight{
    int number;
    int capacity;
    int passengers;
 }flight;

你实际上宣布了两件事:

  • 新结构类型struct flight
  • flight的类型别名struct flight

typedef类型别名一起出现在声明末尾的原因与任何普通声明一样是因为历史原因typedef与存储类说明符放在相同的说明符类别中(例如staticauto)。

请注意,您只需声明:

typedef struct {
    int number;
    int capacity;
    int passengers;
}flight;
如果您只想使用类型标识符flight,则

没有标记名称。