结构体usb_driver里的一个成员

发布于 2022-09-22 11:03:56 字数 1085 浏览 13 评论 0

发现2.4和2.6的usb.h中的同一个结构体---usb_driver
它的成员probe,定义不同:
2.4:
void *(*probe)(
            struct usb_device *dev,             /* the device */
            unsigned intf,                      /* what interface */
            const struct usb_device_id *id      /* from id_table */
            );

2.6:
int (*probe) (struct usb_interface *intf,
                      const struct usb_device_id *id);

我的问题是:
A.
2.4里的成员probe是不是函数(返回指针的函数)?2.6里的probe是不是变量(函数指针变量)?

如果是的话,就奇怪了,结构体定义里难道能用函数做成员吗?

B.
为何2.4里定义的是void,而2.6里定义的是int?

望这里的高手指教,谢谢!

[ 本帖最后由 todayrw 于 2008-9-16 11:04 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏花。依旧 2022-09-29 11:03:56

2.4:
void *(*probe)(
            struct usb_device *dev,             /* the device */
            unsigned intf,                      /* what interface */
            const struct usb_device_id *id      /* from id_table */
            );

2.6:
int (*probe) (struct usb_interface *intf,
                      const struct usb_device_id *id);

2.4的为什么不能认为同2.6的形式,都是函数指针,只是返回值是void*, 而2.6的返回int

秋日私语 2022-09-29 11:03:56

2.4和2.6在很多方面差异都挺大的,只要弄明白了原理,再查看源代码,改起来不会太难的。

空城缀染半城烟沙 2022-09-29 11:03:56

明白了!谢谢!

void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文