具体来说,(*llseek)术语是对象转换吗?此语法是否
为什么“struct file *”没有变量名,如何访问(假设我需要或者被允许访问)。同样,剩下的参数也没有变量名“loff_t,int”,那是为什么呢?最后,__user(在本例中或一般情况下__是一个宏吗?
struct file_operations {
loff_t (*llseek) (struct file *, loff_t, int);
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
希望如此,谢谢你!
具体来说,(*llseek)这个词是一个对象投射吗?
形式为< code > < I > type (* < I > name )(< I > parameter information )的声明将name声明为函数返回类型的指针。
此语法是否
不,它没有特定的名称,尽管它可以被描述为一个函数指针。要了解这些东西,最好是阅读C教科书,而不是尝试在单个主题上进行尝试。或者,如果你有一些C经验,并且成功完成了一些计算机科学理论课程,你可以阅读C标准本身。主要部分(讨论基础语言,没有库或可选部分)只有130页,因此比许多教科书都要少。
为什么“struct file *”没有变量名称,我如何访问它(假设我需要或允许访问它)。
这是函数中参数类型的声明。它表示该参数是指向结构文件
的指针。要调用函数,您只需要知道其参数的类型,以便可以正确转换参数并将其传递给它。您不需要为这些参数指定名称。
同样,其余参数没有变量名称“loff_t,int”,这是为什么?
同上。
最后,__user(在本例中或一般情况下)是宏吗?
它可能是用于为编译器扩展提供文本的宏。它可以为被声明的参数提供属性。