在学习原子哥USB实验的时候,看到代码USB初始化如下:
void USB_Init(void)
{
pInformation = &Device_Info;
pInformation->ControlState = 2;
pProperty = &Device_Property;
pUser_Standard_Requests = &User_Standard_Requests;
/* Initialize devices one by one */
pProperty->Init();
}
关于上面代码,为什么这边要先把结构体变量的指针赋值给 pInformation,然后再pInformation->ControlState = 2;如果这边直接写成 Device_Info.ControlState = 2;可以吗?
还有最后一句写成Device_Property.Init();可以吗?
另外,在USB中断处理函数中:
void USB_Istr(void)
{
wIstr = _GetISTR();
#if (IMR_MSK & ISTR_RESET)
if (wIstr & ISTR_RESET & wInterrupt_Mask)
{
_SetISTR((u16)CLR_RESET);
Device_Property.Reset();
#ifdef RESET_CALLBACK
RESET_Callback();
#endif
}
#endif....
上面又写成了这种变量模式,没有使用指针,若写成pProperty->Reset();是否可行?
上面这两种写法的区别在哪,主要是为何考虑?
谢谢!
|