结构体usb_driver里的一个成员
发现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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
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
2.4和2.6在很多方面差异都挺大的,只要弄明白了原理,再查看源代码,改起来不会太难的。
明白了!谢谢!
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。