此 C 代码中 "Ranks" 和 "Order" 有什么区别?

What is the difference between "Ranks" and "Order" in this C code?

typedef enum Ranks {FIRST, SECOND} Order;

我不清楚这里发生了什么。从教程中示例的其余部分看来,我将使用 Order 来创建变量,如 Order x = 0;,但什么是 Ranks

Ranksenum 的名称,Orderenum Ranks [=20= 的名称]type,用的时候要这样

enum Ranks ranks;
Order      order;

这类似于做

enum Ranks {FIRST, SECOND};
typedef enum Ranks Order;

Ranks是枚举类型的名称,Order是它的别名——类似于:

typedef int Other_int_name

A structenumunion 可以同时具有标签和 typedef 名称。在

typedef enum Ranks {FIRST, SECOND} Order;  

Ranks 是标签,Ordertypedefed 名称。

事实上,标签和 typedef 名称甚至可以相同:

typedef enum Ranks {FIRST, SECOND} Ranks;   // Though, its not required