结构定义

时间:2015-06-25 06:40:57

标签: c typedef

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

结构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_REGtypedef

volatile unsigned int

2 个答案:

答案 0 :(得分:3)

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

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

所以,例如,

int x, *y, z[5];

定义了三个变量,int xint *yint z[5]

因此,

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

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

答案 1 :(得分:2)

是的,你是对的,语法等同于:

typedef struct _AT91S_SYS AT91S_SYS;
typedef struct _AT91S_SYS *AT91PS_SYS;

所以AT91PS_SYS是指针类型AT91S_SYS