OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3552|回复: 3

结构体成员交叉引用 怎么破?

[复制链接]

24

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2014-1-7
在线时间
16 小时
发表于 2015-9-22 21:28:30 | 显示全部楼层 |阅读模式
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中的指针函数可能只能这样使用

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-22 22:20:10 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

24

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2014-1-7
在线时间
16 小时
 楼主| 发表于 2015-9-22 23:01:24 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
全局的,原子哥
回复

使用道具 举报

24

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2014-1-7
在线时间
16 小时
 楼主| 发表于 2015-9-22 23:03:38 | 显示全部楼层
CPWMC oCurrSensor[NBR_OF_MOTORS];  

void MCboot(CMCI oMCIList[NBR_OF_MOTORS])//,CMCT oMCTList[NBR_OF_MOTORS]
{
   oCurrSensor[0]= (CPWMC)R3F2XX_NewObject(&WMnCurrFdbkParamsM1, &R3_DDParamsM1);  
   WMC_Init(oCurrSensor[0], oFOC[0]);  
}
这个函数不执行的时候已经是展不开的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 05:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表