打印

关于一个 C 语言的问题 C 高手请入

[复制链接]
1088|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bozai|  楼主 | 2017-1-4 23:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/**
* @brief  USART data information
*/
struct USART_TxDataLinkTypeDef {
  uint16_t nb2Send;                    /*!< Nb of char to send*/
  uint16_t nbSent;                     /*!< Nb sent char*/
  uint16_t nbMsgLost;                  /*!< Nb lost msg (not enought space in ring buffer)*/
  uint16_t buffSize;                   /*!< Size of send ring buffer*/
  uint8_t* pt_StartTx_Buff;            /*!< point to ring buffer*/
  uint8_t* pt_EndTx_Buff;              /*!< point to end ring buffer*/
  uint8_t* pt_Tx_W;                    /*!< point to free space*/
  uint8_t* pt_Tx_R;                    /*!< point to char to send*/
  void (* CopyDataFcn)(uint8_t* ptSrc, uint16_t DataLength, struct
                       USART_TxDataLinkTypeDef* ptInfo);
  void (* SendDataFcn)(struct USART_TxDataLinkTypeDef* ptInfo);
  __IO USART_TxStatusTypeDef txStatus; /*!< Usart send communication status.*/
  uint8_t txLock;                      /*!< lock data access */
};

上述结构体内,
  void (* CopyDataFcn)(uint8_t* ptSrc, uint16_t DataLength, struct
                       USART_TxDataLinkTypeDef* ptInfo);
  void (* SendDataFcn)(struct USART_TxDataLinkTypeDef* ptInfo);

ptInfo, 利用结构体本身 定义了结构体内的函数参数, 这种相互嵌套的定义,是什么意思?

代码是基于 simulink + STM32 插件 自动生成的,实际的代码是可以跑的。

相关帖子

沙发
m564522634| | 2017-1-5 09:27 | 只看该作者
这就是函数传一个变量,不是相互嵌套了,代码当然能跑了。 只不过这个变量是结构休自己本身了,有什么部里。

使用特权

评论回复
板凳
mini1986| | 2017-1-5 15:18 | 只看该作者
有C++面向对象的思想在里面,一个函数指针而已......

使用特权

评论回复
地板
joecongmin| | 2017-1-5 21:37 | 只看该作者
楼上几位回复的正确,是用C写出了C++的风格,同时在成员函数里又用到了结构体本身的指针变量做参数,这是可以的,像链表操作,就是在结构内的成员又是指向该结构体的指针的类型

使用特权

评论回复
5
钩月黄昏| | 2017-1-5 21:41 | 只看该作者
函数指针呗

使用特权

评论回复
6
qiuting| | 2017-1-6 08:55 | 只看该作者
路过

使用特权

评论回复
7
shalixli| | 2017-1-6 09:25 | 只看该作者
本帖最后由 shalixli 于 2017-1-6 09:31 编辑

这样写    最大的问题 就是条例不清晰
写一个这样的程序,要让楼主发个贴来询问请教一番。 那个作者本身就有问题了。

void  * 什么      是函数指针。  也就是个入口地址而已 , 是32位的
你 用SIZEOF() 就知道这个结构体的大小 是 固定的 字节大小。
程序 就是语言。  就是 说出来的语言,    这样说话  也太让人费解。 不好。






使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

136

帖子

1

粉丝