匿名结构体

struct {
    int a;
    int b;
} v;

// 这里表示定义了一个结构体的变量a,且结构体类型没有名字,后续不能再定义结构体,除非又把结构体写一遍。

有名字的结构体

struct struct_type{
    int a;
    int b;
} v;

// 这里表示定义了一个结构体的变量v,且结构体类型的名字为 "struct struct_type"
// 后续要定义结构体变量的时候要使用"struct struct_type"
// 有的编译器使用struct_type定义变量也是可以的,class一样。
struct struct_type b; // 定义结构体变量b

使用typedef命名

typedef struct {
    int a;
    int b;
} S_TYPE;
// 或者
typedef struct struct_type {
    int a;
    inb b;
} S_TYPE;

// 两种定义方式都可以使用"S_TYPE"定义结构体变量,第二中还可以使用"struct struct_type"或者sturct_type定义结构体变量。
// 使用了typedef就不能在定义类型的时候也声明变量。

S_TYPE v;

特殊的emue,emue中定义的值其实就是define

typedef emue {
    RED, BLUE,GREEN  //域之间是用“,”分开,不像struct和union是用“;”分开。
} color;
// 等效于
// #define RED    0
// #define BLUE   1
// #define GREEN 2


color c = RED;  // 由于域是define的,也就是全局的,可以直接使用
12-27 01:00