QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1120|回复: 2

请教关于一条C语言语句的解释

[复制链接]
发表于 2004-4-23 09:10:37 | 显示全部楼层 |阅读模式
在linux/blkdev.h中有这样一条定义语句:
typedef int (merge_request_fn) (request_queue_t *q,
                                struct request  *req,
                                struct buffer_head *bh,
                                int);
一般情况下,typedef可以这样用:typedef struct my_struct my_struct_t; 这样以后就可以使用类似“my_struct_t  my_struct1;”的定义语句。可是象上面typedef的用法,我能猜到这样定义的意思,可是总觉得概念有点不是太清楚,请各位详细解释一下这种关于函数名的强制定义的用法。多谢!
发表于 2004-5-9 23:17:26 | 显示全部楼层
merge_request_fn is a type redefinition of a function pointer, it can use as follows :

int function1(request_queue_t* q, struct request* req, struct buffer_head* bh, int n)
{ ... }

merge_request_fn   mrf = function1;

mrf(... )  // it is as same as calling function1(...)

印象中,错了请指正
回复

使用道具 举报

发表于 2004-5-10 08:51:37 | 显示全部楼层
嗯,关于typedef 有一句比较经典的话(谁说的忘了), 大致意思就是:你想知道typedef定义的是什么,你就把typedef拿走, 它定义的就是剩下的变量定义的类型。
比如:
int (merge_request_fn) (request_queue_t *q,
struct request *req,
struct buffer_head *bh,
int);
是个指针定义;

typedef int (merge_request_fn) (request_queue_t *q,
struct request *req,
struct buffer_head *bh,
int);
定义的就是这种指针的类型。 就如楼上所说
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 08:45 , Processed in 0.068542 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表