如何解释以下typedef语句

bod*_*ser 3 c typedef type-conversion

如何解释以下typedef语句.

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

unsigned char* byte = (unsigned char*) (some signed char);
Run Code Online (Sandbox Code Playgroud)

但现在我看到以下声明:

typedef void (*uv_read_cb)(uv_stream_t* stream, ssize_t nread, uv_buf_t buf);
Run Code Online (Sandbox Code Playgroud)

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

让我困惑的是:

  • 没有typedef的名称
  • 我们怎样才能对某些参数进行类型转换?

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

K S*_*iel 5

typedef确实有一个名称... uv_read_cb这是一个指向接受a uv_stream_t*,a ssize_t和a uv_buf_t参数并返回的函数的指针void.

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

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

struct myVTable
{
    uv_read_cb  uv_read_callback;
};

void myVFunction(  uv_stream_t* stream, uv_read_db callback )
{
     ssize_t length = 100;
     uv_buf_t buf;
     myVTable table;

     table.uv_read_callback = callback;

     table.uv_read_callback( stream, length, buf );

     // or you could alternatively use 'callback( stream, length, buf );'
}
Run Code Online (Sandbox Code Playgroud)