以下c代码的含义是什么?

时间:2013-01-30 12:41:41

标签: c function-pointers typedef

typedef int (*http_data_cb) (http_parser*, const char *at, size_t length);

据我所知, typedef 为标准库中的类型指定了新名称。在这种情况下,*http_data_cb的实例是一个int,但(http_parser*, const char *at, size_t length)怎么样?

以下是whole code

的链接

谢谢,

3 个答案:

答案 0 :(得分:2)

这是一种typedef类型的方法,它是一个指向函数的指针。通常在这样的typedef中,您不会为函数命名参数,而只是指出它们的类型。

因此,类型http_data_cb的变量将是一个指向函数的指针,该函数返回int结果并按此顺序获取类型为http_parser*const charsize_t的三个参数

答案 1 :(得分:1)

它声明了一个函数指针类型。

type-alias http_data_cb是一个指向函数的指针,该函数接收三个参数并返回一个整数。

您可以使用它来指向其他函数,例如在事件驱动的系统中作为回调传递。

有关阅读和理解声明的更多帮助,请参阅例如: the clockwise/spiral rule

答案 2 :(得分:0)

http_data_cb :是变量

(* http_data_cb):是一个指针变量

(* http_data_cb)(...):是函数的指针变量

(* http_data_cb)(http_parser *,const char * at,size_t length):是收到的函数的指针变量(http_parser *,const char * at,size_t length)

int(* http_data_cb)(http_parser *,const char * at,size_t length):是一个接收函数的指针变量(http_parser *,const char * at,size_t length)和返回一个int。

typedef int(* http_data_cb)(http_parser *,const char * at,size_t length): http_data_cb被声明为新的数据类型别名,作为收到的函数的指针变量(http_parser * ,const char * at,size_t length)并返回一个int。