C 带有结构定义的typedef语法

C 带有结构定义的typedef语法,c,typedef,C,Typedef,我有一个微控制器的示例代码 有一个结构typedefd,如下所示 typedef struct _AT91S_SYS { AT91_REG AIC_SMR[32]; // Source Mode Register AT91_REG AIC_SVR[32]; // Source Vector Register AT91_REG AIC_IVR; // IRQ Vector Register ... } AT91S_SYS, *AT

我有一个微控制器的示例代码

有一个结构
typedef
d,如下所示

typedef struct _AT91S_SYS {
    AT91_REG     AIC_SMR[32];   // Source Mode Register
    AT91_REG     AIC_SVR[32];   // Source Vector Register
    AT91_REG     AIC_IVR;   // IRQ Vector Register
    ...
} AT91S_SYS, *AT91PS_SYS;
我已经将
typedef
与结构一起使用,比如
}AT91S\u SYS

这个附加部分的作用是什么<代码>*AT91PS\U系统在AT91S\U系统中,*AT91PS\U系统
它是指向
struct\u AT91S\u SYS
类型的指针吗


AT91_REG
是一个
AT91S_SYS
typedef
类型,它只是将类型
AT91S_SYS
定义为指向
AT91S_SYS
的指针


顺便说一句,理解
typedef
最简单的方法是阅读声明的其余部分,就好像它只是一个变量声明一样。但是,不是定义变量,而是使用变量可能具有的任何类型来定义类型

那么比如说,

int x, *y, z[5];
定义三个变量,
int x
int*y
int z[5]

所以,

typedef int x, *y, z[5];

定义两种类型,
x==int
y==int*
z==int[5]
。简单

这只是将类型
AT91PS_SYS
定义为指向
AT91S_SYS
的指针


顺便说一句,理解
typedef
最简单的方法是阅读声明的其余部分,就好像它只是一个变量声明一样。但是,不是定义变量,而是使用变量可能具有的任何类型来定义类型

那么比如说,

int x, *y, z[5];
定义三个变量,
int x
int*y
int z[5]

所以,

typedef int x, *y, z[5];

定义两种类型,
x==int
y==int*
z==int[5]
。简单

是的,你是对的,语法相当于:

typedef struct _AT91S_SYS AT91S_SYS;
typedef struct _AT91S_SYS *AT91PS_SYS;

因此
AT91PS_SYS
是一种指针类型的
AT91S_SYS
是的,您是对的,语法相当于:

typedef struct _AT91S_SYS AT91S_SYS;
typedef struct _AT91S_SYS *AT91PS_SYS;
因此
AT91PS_SYS
AT91S_SYS
的指针类型