ttjswdy 发表于 2004-4-23 09:10:37

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

在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_tmy_struct1;”的定义语句。可是象上面typedef的用法,我能猜到这样定义的意思,可是总觉得概念有点不是太清楚,请各位详细解释一下这种关于函数名的强制定义的用法。多谢!

rhyno 发表于 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(...)

印象中,错了请指正

HalfWorm 发表于 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);
定义的就是这种指针的类型。 就如楼上所说
页: [1]
查看完整版本: 请教关于一条C语言语句的解释