C 我如何解释下面的typedef语句 我如何解释下面的typedef语句。

C 我如何解释下面的typedef语句 我如何解释下面的typedef语句。,c,type-conversion,typedef,C,Type Conversion,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); 让我完全困惑的是: 没有typedef的名称 如何对某些参数进行类型转换 有人对此有答案吗?typede

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

unsigned char* byte = (unsigned char*) (some signed char);
但现在我看到以下声明:

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

让我完全困惑的是:

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

有人对此有答案吗?

typedef确实有一个名称
uv\u read\u cb
这是一个指向函数的指针,该函数接受
uv\u stream\u t*
、一个
ssize\u t
和一个
uv\u buf\u 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 );'
}

它是一个指向函数的指针,该函数获取
uv\u stream\u t*
ssize\u t
uv\u buf\u t
,并返回void。
uv\u read\u cb
也是该类型,您可以使用它定义具有相同签名的其他函数。 例如:

uv_read_cb my_func;

此语句将
uv\u read\u cb
定义为指向返回void的函数的指针。

因此它用于检查函数是否接受定义的参数而不对实现本身进行严格限制(使用直接函数定义时会出现这种情况)?我走对了吗?还有一个更具表现力的例子吗?我相信
table.uv\u read\u回调(steam、lenght、buf)而不是
回调(蒸汽、长度、buf),更适合解释函数指针的帮助。足够公平-相应地进行编辑。几乎:s/作为指向的指针/作为指向的类型指针的别名/