我有一个微控制器的示例代码。
结构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_SYS;
等结构一起使用。
这个附加部分有什么作用? *AT91PS_SYS;
中的} AT91S_SYS, *AT91PS_SYS;
它是指向struct _AT91S_SYS
类型的指针吗?
AT91_REG
是typedef
volatile unsigned int
答案 0 :(得分:3)
这只是将类型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]
。简单!
答案 1 :(得分:2)
是的,你是对的,语法等同于:
typedef struct _AT91S_SYS AT91S_SYS;
typedef struct _AT91S_SYS *AT91PS_SYS;
所以AT91PS_SYS
是指针类型AT91S_SYS
。