请教原子哥:在一个结构体中包含函数指针有什么作用吗?

2019-07-21 00:20发布

本帖最后由 liuchang 于 2016-1-5 09:17 编辑

小弟最近在看lwip,其中netif结构体中包含几个函数指针
[mw_shl_code=c,true]struct netif {
  struct netif *next;
  ip_addr_t ip_addr;
  ip_addr_t netmask;
  ip_addr_t gw;
  netif_input_fn input;
  netif_output_fn output;[/mw_shl_code]
小弟想请问大神,这有什么作用?按照小弟的理解,在结构体中放入变量,指针,可以理解为成员的属性,可是如果放入函数指针,它有什么作用,还是某种约定?
而且,还需要在结构体外完成这个函数类型的定义,初始化,有什么必要呢?恳请大神指教~


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
trochili
1楼-- · 2019-07-21 02:00
这几个确实是函数指针。以后在具体硬件平台上,会被初始化成不同的函数。比如在stm32f107上用的就是st的库函数,而在stm32f103+enc28j60时,初始化成enc28j60的驱动函数。trochili rtos上用的是stm32f107, st的dma方式的库函数。
jermy_z
2楼-- · 2019-07-21 07:07
那个不是函数体指针,是结构体指针,按照代码来看,是指向下一个netif
liuchang
3楼-- · 2019-07-21 09:31
jermy_z 发表于 2016-1-5 09:12
那个不是函数体指针,是结构体指针,按照代码来看,是指向下一个netif

这里的input,output不是函数指针吗?恳请大神指教
vwv
4楼-- · 2019-07-21 09:59
 精彩回答 2  元偷偷看……
trochili
5楼-- · 2019-07-21 13:41
 精彩回答 2  元偷偷看……
xkwy
6楼-- · 2019-07-21 14:58
为了实现面向对象吧,可以认为它是“方法”或“事件”,而普通的结构体成员则是属性

一周热门 更多>