请教关于一条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的用法,我能猜到这样定义的意思,可是总觉得概念有点不是太清楚,请各位详细解释一下这种关于函数名的强制定义的用法。多谢! 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(...)
印象中,错了请指正 嗯,关于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]