如何解释以下typedef语句

时间:2013-05-07 16:33:35

标签: c type-conversion typedef

如何解释以下typedef语句。

我已经通过类型转换获得了一些知识。它们用于将变量后面的字节重新解释为另一种类型。例如:

unsigned char* byte = (unsigned char*) (some signed char);

但现在我看到以下声明:

typedef void (*uv_read_cb)(uv_stream_t* stream, ssize_t nread, uv_buf_t buf);

https://github.com/bodokaiser/libuv/blob/master/include/uv.h#L314

让我感到困惑的是:

  • 没有typedef的名称
  • 我们如何对某些参数进行类型转换?

有人对这些问题有答案吗?

3 个答案:

答案 0 :(得分:5)

typedef确实有一个名称... uv_read_cb,它是一个指向接受uv_stream_t*ssize_tuv_buf_t参数的函数的指针,并返回{ {1}}。

这允许您在结构中添加指向函数的指针,将函数指针传递给函数等,同时允许您定义可以为变量分配的函数类型或传递...

void

答案 1 :(得分:3)

它是指向获取uv_stream_t*ssize_tuv_buf_t的函数的指针,并返回void。 uv_read_cb也是类型,您可以使用它来定义具有相同签名的其他函数。 例如:

uv_read_cb my_func;

答案 2 :(得分:1)

此语句将uv_read_cb定义为指向返回void的函数的指针。