中级会员
 
- 积分
- 219
- 金钱
- 219
- 注册时间
- 2014-1-7
- 在线时间
- 16 小时
|
5金钱
typedef struct
{
void *(*pIRQ_Handler)(void *this, unsigned char flag);
void (*pPWMC_Init)(CPWMC this, void *pDrive);
void (*pPWMC_GetPhaseCurrents)(CPWMC this, Curr_Components* pStator_Currents);
void (*pPWMC_SwitchOffPWM)(CPWMC this);
void (*pPWMC_SwitchOnPWM )(CPWMC this);
}Methods_t,*pMethods_t;
typedef struct
{
Methods_t Methods_str; /*!< Virtual methods container */
Vars_t Vars_str; /*!< Class members container */
pParams_t pParams_str; /*!< Class parameters container */
void *DerivedClass; /*!< Pointer to derived class */
}_CPWMC_t, *_CPWMC;
这是ST电机库的内容,在private.h中定义,我们会发现如果将Methods_t结构体中的CPWMC改成_CPWMC,则两个结构体交叉引用,这在编译时就出错。那怎么办呢,ST是将另一个class.h中typedef struct CPWMC_t *CPWMC;然后在private.h文件中包含class.h,很好的解决了这个问题,但是另一个问题存在,实验发现在keil的watch观察器中CPWMC定义的结构体指针
CPWMC oCurrSensor[0];oCurrSensor[0]在观察器中“+”是展不开的,也就是没办法观察其内部成员的值,调试起来很不方便(并且我试验过,如果不是这么重定义结构体类型,是可以观察的)请问这个问题怎么破,并且methods_t中的指针函数可能只能这样使用
|
|