当前位置: 技术问答>linux和unix
请教结构体定义--LINUX驱动程序中语句
来源: 互联网 发布时间:2016-01-28
本文导语: 请教下面这个结构体定义中read: device_read,一句是什么意思? struct file_operations fops = { read: device_read, write: device_write, open: device_open, release: device_release }; | struct file_operations fops = { read: device_read, write: devi...
请教下面这个结构体定义中read: device_read,一句是什么意思?
struct file_operations fops =
{
read: device_read,
write: device_write,
open: device_open,
release: device_release
};
|
struct file_operations fops =
{
read: device_read,
write: device_write,
open: device_open,
release: device_release
};
应该是给fops结构体变量的read 赋初值device_read
这应该是gcc的用法,标准c应该不支持
{
read: device_read,
write: device_write,
open: device_open,
release: device_release
};
应该是给fops结构体变量的read 赋初值device_read
这应该是gcc的用法,标准c应该不支持
|
类似的还有
struct test test1=
{
.a1=a1func,
.a2=a2func
...
}
struct test test1=
{
.a1=a1func,
.a2=a2func
...
}
|
我怀疑是 初始化 呵呵 严重怀疑
|
各位老大,这是C的基础知识呀。
无语了,不知道有没有听过“勿在浮沙之上筑高台”?
无语了,不知道有没有听过“勿在浮沙之上筑高台”?
|
只是语法问题吧!
|
gcc对标准C的扩展,<<LINUX设备驱动程序>>一书中说了相关的内容
|
意思是你在上层程序调用read(这个驱动文件打开后返回的句柄,xx,size)的时候,在驱动里面其实调用的是device_read
我靠这么简单的问题怎么这么多人回答的千奇百怪
我靠这么简单的问题怎么这么多人回答的千奇百怪
|
意思是你在上层程序调用read(这个驱动文件打开后返回的句柄,xx,size)的时候,在驱动里面其实调用的是device_read
我靠这么简单的问题怎么这么多人回答的千奇百怪
==========================================
从C语法看就是:read = device_read?
============================
no,只是一种映射
|
gcc下结构体赋初值的一种语法,
标准C下一般直接struct test test1={*,*,*..},*是成员值,如device_read
是成员变量read的值
gcc把每个值和成员变量对应起来,看的更清楚.
标准C下一般直接struct test test1={*,*,*..},*是成员值,如device_read
是成员变量read的值
gcc把每个值和成员变量对应起来,看的更清楚.
|
这是典型的OO-C结构, file_operations结构体里保存函数指针, 形成类似于C++中的父类.
创建一个file_operations结构, 指定函数指针的地址, 类似于继承了父类的子类.
底层调用时只管调用file_ops结构的指针, 便调用了指向的函数, 类似于多态.
详细请见LDD, 也可以看代码.
创建一个file_operations结构, 指定函数指针的地址, 类似于继承了父类的子类.
底层调用时只管调用file_ops结构的指针, 便调用了指向的函数, 类似于多态.
详细请见LDD, 也可以看代码.