zhangjie336 发表于 2012-1-2 16:10:17

关于结构体的问题!

typedef struct _AT91S_AIC {
        AT91_REG       AIC_SMR;         // Source Mode Register
        AT91_REG       AIC_SVR;         // Source Vector Register
        AT91_REG       AIC_IVR;         // IRQ Vector Register
        AT91_REG       AIC_FVR;         // FIQ Vector Register
        AT91_REG       AIC_ISR;         // Interrupt Status Register
        AT91_REG       AIC_IPR;         // Interrupt Pending Register
        AT91_REG       AIC_IMR;         // Interrupt Mask Register
        AT91_REG       AIC_CISR;         // Core Interrupt Status Register
        AT91_REG       Reserved0;         //
        AT91_REG       AIC_IECR;         // Interrupt Enable Command Register
        AT91_REG       AIC_IDCR;         // Interrupt Disable Command Register
        AT91_REG       AIC_ICCR;         // Interrupt Clear Command Register
        AT91_REG       AIC_ISCR;         // Interrupt Set Command Register
        AT91_REG       AIC_EOICR;         // End of Interrupt Command Register
        AT91_REG       AIC_SPU;         // Spurious Vector Register
        AT91_REG       AIC_DCR;         // Debug Control Register (Protect)
        AT91_REG       Reserved1;         //
        AT91_REG       AIC_FFER;         // Fast Forcing Enable Register
        AT91_REG       AIC_FFDR;         // Fast Forcing Disable Register
        AT91_REG       AIC_FFSR;         // Fast Forcing Status Register
} AT91S_AIC, *AT91PS_AIC;

这是头文件的结构体
在main函数内有这句话
AT91PS_AIC pPMC = AT91C_BASE_PMC
在结构体中 AT91PS_AIC 不是结构指针么 怎么能定义变量呢?
在网上查了下有这个解释的
typedef struct
{
int num;
int age;
}aaa;
typedef aaa bbb;
typedef aaa ccc;
也就是说aaa,bbb,ccc三者都是结构体类型。声明变量时用任何一个都可以,在c++中也是如此。但是你要注意的是这个在c++中如果写掉了typedef关键字,那么aaa,bbb,ccc将是截然不同的三个对象。

是这么回事么?

Notes 发表于 2012-1-2 16:22:14

好复杂。。

chinamt 发表于 2012-1-2 16:52:58

是的
页: [1]
查看完整版本: 关于结构体的问题!